剑指offer 算法 (代码的鲁棒性)
生活随笔
收集整理的这篇文章主要介绍了
剑指offer 算法 (代码的鲁棒性)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。
/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){bool result = false;if( pRoot1 != NULL && pRoot2 != NULL ){if( pRoot1->val == pRoot2->val )result = DoesRootHaveSameLeaves(pRoot1,pRoot2);if( !result )result = HasSubtree(pRoot1->left,pRoot2);if( !result )result = HasSubtree(pRoot1->right,pRoot2);}return result;}bool DoesRootHaveSameLeaves(TreeNode* pRoot1, TreeNode* pRoot2){if( pRoot2 == NULL )return true;if( pRoot1 == NULL )return false;if( pRoot1->val != pRoot2->val )return false;return DoesRootHaveSameLeaves(pRoot1->left,pRoot2->left) && DoesRootHaveSameLeaves(pRoot1->right,pRoot2->right);} };
输入一个链表,输出该链表中倒数第k个结点。
解析:p1,p2保持k-1的距离,当p1指向链表尾时,p2正好指向倒数第k个结点
题目描述
输入一个链表,反转链表后,输出链表的所有元素。
解析:curNode保存当前结点,preNode保存已遍历过的反转好的链表的头结点,newList作最后反转好的链表头。当curNode不是指向链表尾时,先保存链表nextNode值,使curNode->next指向preNode,preNode再保存curNode,最后恢复curNode为nextNode。直到curNode指向链表尾,即nextNode为空时,newList=curNode。结束~~
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解析:比较pHead1和pHead2的较小值赋给当前结点,递归比较下一个较小值赋予下一个结点,直到某一链表为空
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。
/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){bool result = false;if( pRoot1 != NULL && pRoot2 != NULL ){if( pRoot1->val == pRoot2->val )result = DoesRootHaveSameLeaves(pRoot1,pRoot2);if( !result )result = HasSubtree(pRoot1->left,pRoot2);if( !result )result = HasSubtree(pRoot1->right,pRoot2);}return result;}bool DoesRootHaveSameLeaves(TreeNode* pRoot1, TreeNode* pRoot2){if( pRoot2 == NULL )return true;if( pRoot1 == NULL )return false;if( pRoot1->val != pRoot2->val )return false;return DoesRootHaveSameLeaves(pRoot1->left,pRoot2->left) && DoesRootHaveSameLeaves(pRoot1->right,pRoot2->right);} };
总结
以上是生活随笔为你收集整理的剑指offer 算法 (代码的鲁棒性)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 剑指offer 算法 (代码的完整性)
- 下一篇: 剑指offer 算法 (画图让抽象问题形