LeetCode-- Same Tree & Symmetric Tree
2015-07-29 14:17
399 查看
Same Tree & Symmetric Tree
Same Tree
判断两个二叉树是否相等,包括结构相等和节点值相等。C++代码
第一种:
// 递归版,时间复杂度 O(n),空间复杂度 O(logn) class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { if(!p&&!q) return true; if(!p||!q) return false; return p->val==q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right); } };
第二种:
class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { stack<TreeNode *>s; s.push(p); s.push(q); while(!s.empty()) { q = s.top(); s.pop(); p = s.top(); s.pop(); if(!p&&!q) continue; if(!p||!q) return false; if(p->val != q->val) return false; s.push(p->left); s.push(q->left); s.push(p->right); s.push(q->right); } return true; } };
Symmetric Tree
Symmetric Tree 与 Same Tree类似,判断是否为对称二叉树。算法 左右节点交换对比。
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
C++代码
第一种:
class Solution { public: bool isSymmetric(TreeNode* root) { return root ?isSymmetric(root->left, root->right) : true; } bool isSymmetric(TreeNode *left, TreeNode *right){ if (!left && !right) return true; if (!left || !right) return false; return left->val==right->val && isSymmetric(left->left, right->right) && isSymmetric(left->right, right->left); } };
第二种:
class Solution { public: bool isSymmetric(TreeNode* root) { if(!root) return true; stack<TreeNode *>s; s.push(root->left); s.push(root->right); while(!s.empty()){ TreeNode *p = s.top(); s.pop(); TreeNode *q = s.top(); s.pop(); if(!p&&!q) continue; if(!p||!q) return false; if(p->val!=q->val) return false; s.push(p->left); s.push(q->right); s.push(p->right); s.push(q->left); } return true; } };
相关文章推荐
- padding和margin区别
- ios开发--Header Search Paths
- 前端性能优化(CSS动画篇)
- 传智播客承办工信部CSIP全国骨干教师暑期研修班
- 三、伪分布环境下安装hbase
- java 代码取当月第一天、当年第一天
- Linux 的多线程编程的高效开发经验
- iOS开发多线程篇—NSThread及线程的状态
- ios开发--xcode如何实现多工程联编
- Scala和Java的循环性能对比
- Java Process 程序阻塞处理
- objectARX结果类型码
- HDU-5319 Painter
- 逆向破解的基础
- HDUOJ 1022 (栈的基本应用)火车进站问题I
- eclipse下MAVEN离线环境搭建
- Android开发中实用工具之--Log工具类
- linux服务器间的拷贝命令
- 重要的事情说三遍!
- win7系统c盘瘦身,去虚拟内存方式