problem
Same Tree
code
回归的方法
/** * Definition for a binary tree node. * 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) { if(p==NULL || q==NULL) return(p==q); return ( (p->val==q->val) && isSameTree(p->left, q->left) && isSameTree(p->right, q->right) ); } };
or just one line code
class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { return (p==NULL||q==NULL) ? (p==q) : ((p->val==q->val) && isSameTree(p->left, q->left) && isSameTree(p->right, q->right)); } };
这道题还有非递归的解法,因为二叉树的四种遍历(层序,先序,中序,后序)均有各自的迭代和递归的写法,这里我们先来看先序的迭代写法,相当于同时遍历两个数,然后每个节点都进行比较.
参考
1. Same Tree;
2. GrandYang_cnblogs;
3. leeetcode_discuss;
完