[LeetCode]Same Tree解题
来源:互联网 发布:数据资源建设思路 编辑:程序博客网 时间:2024/06/06 07:46
题意:给出两个二叉树,提供算法来判断这两个二叉树是否相同,这里的相同包含树的Node数量及树的结构相同,以及树Node的Value相同
分析:题目很基础 ,就是二叉树的遍历,同时遍历两个二叉树
边界条件:如果两个Node都为空,则为相同;如果两个Node一个为空,则不相同,否则,依据value来判定是否相同。
方法1:代码比较简单的实现就是递归实现,先判断树根Node是否相同,如果相同,则分别判断左、右孩子节点的值,如此递归下去。
bool isSameTree(TreeNode *p, TreeNode *q) {// Start typing your C/C++ solution below// DO NOT write int main() functionif(p == NULL && q == NULL){ return true;}if(p == NULL || q == NULL){ return false;}return (p->val == q->val) && isSameTree(p->left, q->left) && isSameTree(p->right, q->right);}
此种方式实质上是采用深度遍历的思想。
方法2:用广度遍历的思想,采用循环的方式来遍历二叉树。代码如下:
bool isSameTree(TreeNode *p, TreeNode *q) {// Start typing your C/C++ solution below// DO NOT write int main() functionif (p == NULL && q == NULL){return true;}else{if (!IsEqualNode(p, q)){return false;}}queue<TreeNode *> pQueue = queue<TreeNode *>();queue<TreeNode *> qQueue = queue<TreeNode *>();pQueue.push(p);qQueue.push(q);while(!pQueue.empty() && !qQueue.empty()){TreeNode * pnode = pQueue.front();TreeNode * qnode = qQueue.front();pQueue.pop();qQueue.pop();if (!IsEqualNode(pnode, qnode)){return false;}if (pnode->left || qnode->left){pQueue.push(pnode->left);qQueue.push(qnode->left);}if (pnode->right || qnode->right){pQueue.push(pnode->right);qQueue.push(qnode->right);}}if (pQueue.empty() && qQueue.empty()){return true;}else{return false;}}bool IsEqualNode(TreeNode * p, TreeNode * q){if (p == NULL || q == NULL){if ((p == NULL) ^ (q == NULL)){return false;}else{return true;}}else{if(p->val == q->val){return true;}else{return false;}}}
此方式AC完美通过,耗时16ms。
- [LeetCode]Same Tree解题
- 【LeetCode】Same Tree 解题报告
- [leetcode] 100. Same Tree 解题报告
- 【LeetCode】100. Same Tree 解题报告
- LeetCode 100. Same Tree 解题报告
- LeetCode解题报告 100. Same Tree [easy]
- [Leetcode] 100. Same Tree 解题报告
- [leetcode]100. Same Tree@Java解题报告
- 【LeetCode】100.Same Tree(Easy)解题报告
- Leetcode 100. Same Tree 验证树是否相同 解题报告
- leetcode解题之100# Same Tree Java版
- Leetcode - Tree - Same Tree
- [leetcode][tree] Same Tree
- LeetCode: Same Tree
- LeetCode Same Tree
- [Leetcode] Same Tree
- LeetCode : Same Tree
- [LeetCode] Same Tree
- nginx配置DocumentRoot
- 做一个会编程的人——美国32位顶级精英如是说
- 黑马程序员 java入门:for嵌套
- 创建含有category的静态库,selector not recognized的解决方案
- Steve Yegge:Google面试秘籍
- [LeetCode]Same Tree解题
- vs2012编译程序在xp下运行时提示"无法定位程序输入点 InitializeCriticalSectionEx ..."
- java基础--Comparable和Comparator的区别
- epoll使用入门学习
- 华为2014上机考试样题_高级题_地铁换乘最短路径_无向无权图+邻接表存储+BFS广度优先算法
- MongoDB基本命令用
- JavaScript 的性能优化:加载和执行
- 谈谈.NET中常见的内存泄露问题——GC、委托事件和弱引用
- 字符串和utf-8编码互转