Symetrict Tree / Same Tree - LeetCode
2015-05-09 02:38
260 查看
树的遍历:
先序- 中左右。迭代时使用1个stack来存放过往节点。
中序- 左中右。迭代时使用1个stack来存放过往节点。
后续- 左右中。迭代时使用2个stack,s1 push 左节点,右节点,s2 push 根节点。
<1> isSymetricTree:
传入左右两个子树。
他们还有他们的孩子都要是symetric的。
时间复杂度:
正常的遍历一边树。O(n).
空间复杂度:O(logn)
<2> isSameTree
用stack,同进同出。
注意:不能单独判断left和right是否为空。否则stack不是同时记录。下面的情况若是curp->right!=NULL,curq->right=NULL 就不进行push了 是不对的。
[10,5,15], [10,5,null,null,15]
Output: true
Expected: false
先序- 中左右。迭代时使用1个stack来存放过往节点。
中序- 左中右。迭代时使用1个stack来存放过往节点。
后续- 左右中。迭代时使用2个stack,s1 push 左节点,右节点,s2 push 根节点。
<1> isSymetricTree:
传入左右两个子树。
他们还有他们的孩子都要是symetric的。
时间复杂度:
正常的遍历一边树。O(n).
空间复杂度:O(logn)
class Solution { public: bool isSymmetric(TreeNode* root) { if(root == NULL) return true; TreeNode* rl; TreeNode* rr; rl = root->left; rr = root->right; if(rr->val!=rr->val) return false; return Helper(rl,rr); } bool Helper(TreeNode *rl, TreeNode *rr) { if(rl == NULL && rr == NULL) return true; if(rl==NULL && rr!=NULL) return false; if(rl!=NULL && rr == NULL) return false; if(rl->val!=rr->val) return false; return Helper(rl->left,rr->right) && Helper(rl->right, rr->left); } };
<2> isSameTree
用stack,同进同出。
注意:不能单独判断left和right是否为空。否则stack不是同时记录。下面的情况若是curp->right!=NULL,curq->right=NULL 就不进行push了 是不对的。
[10,5,15], [10,5,null,null,15]
Output: true
Expected: false
class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { //pre-order iteration if(q==NULL && p == NULL) return true; if(q==NULL || p==NULL) return false; stack<TreeNode*> stkp,stkq; stkp.push(p); stkq.push(q); while(!stkp.empty() && !stkq.empty()) { TreeNode *curp = stkp.top(); TreeNode *curq = stkq.top(); stkp.pop(); stkq.pop(); if(curp==NULL && curq==NULL) continue; if(curp!=NULL && curq!=NULL && curq->val==curp->val) { stkp.push(curp->right); stkq.push(curq->right); stkp.push(curp->left); stkq.push(curq->left); } else return false; } return true; } };
相关文章推荐
- leetcode解题之100# Same Tree Java版
- (leetcode) Same Tree
- Same Tree problem on leetcode
- leetCode(14):Invert Binary Tree and Same Tree 分类: leetCode 2015-06-21 11:48 170人阅读 评论(0) 收藏
- LeetCode:same_tree题解
- LeetCode Same Tree
- LeetCode Same Tree
- Leetcode-100: Same Tree
- Same Tree LeetCode
- LeetCode: Same Tree
- Leetcode 之 Same Tree
- LeetCode Same Tree
- LeetCode Same Tree
- leetcode Same Tree python
- LeetCode Same Tree
- leetcode之Same Tree
- LeetCode:Same Tree
- [leetcode]Same Tree @ Python
- leetCode(14):Invert Binary Tree and Same Tree
- leetcode Same Tree