Leetcode Same Tree
2013-10-12 09:56
399 查看
判断两个树是否相同,包括树的结构和借点得知都一样。
同样可以用递归判断两棵树的左子树和右子树是否相同,也可以用非递归对两棵树进行层次遍历,并标记他们是左结点还是右结点,然后进行判断。
非递归法:
递归法:
同样可以用递归判断两棵树的左子树和右子树是否相同,也可以用非递归对两棵树进行层次遍历,并标记他们是左结点还是右结点,然后进行判断。
非递归法:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSameTree(TreeNode *p, TreeNode *q) { // Note: The Solution object is instantiated only once and is reused by each test case. queue<TreeNode*> p_tree, q_tree; queue<bool> p_tag, q_tag; if(p != NULL){ p_tree.push(p); p_tag.push(true); } if(q != NULL){ q_tree.push(q); q_tag.push(true); } TreeNode *ptr, *qtr; int ptg, qtg; while(!p_tree.empty() || !q_tree.empty()){ if(p_tree.size() != q_tree.size()) return false; ptr = p_tree.front(), qtr = q_tree.front(); ptg = p_tag.front(), qtg = q_tag.front(); if(ptr->val != qtr->val || ptg != qtg) return false; p_tree.pop(); q_tree.pop(); p_tag.pop(); q_tag.pop(); if(ptr->left != NULL){ p_tree.push(ptr->left); p_tag.push(true); } if(ptr->right != NULL){ p_tree.push(ptr->right); p_tag.push(false); } if(qtr->left != NULL){ q_tree.push(qtr->left); q_tag.push(true); } if(qtr->right != NULL){ q_tree.push(qtr->right); q_tag.push(false); } } return true; } };
递归法:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSameTree(TreeNode *p, TreeNode *q) { // Note: The Solution object is instantiated only once and is reused by each test case. if(p == NULL && q == NULL) return true; if((p != NULL && q == NULL) || (p == NULL && q != NULL) || p->val != q->val) return false; return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); } };
相关文章推荐
- LeetCode Same Tree
- 4.5 leetcode -5 same-tree
- LeetCode:Same Tree - 判断两颗树是否相等
- LeetCode Same Tree
- LeetCode:Same Tree && Reverse Integer
- leetcode解题之100# Same Tree Java版
- [leetcode]Same Tree @ Python
- 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 Same Tree
- LeetCode-Same Tree & Symmetric Tree
- leetcode Same Tree
- LeetCode Same Tree
- LeetCode Same Tree (判断相同树)
- LeetCode Same Tree
- Leetcode 100 : same Tree
- LeetCode Same Tree
- leetcode Same Tree python