题目:
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
解题思路:对两棵树进行遍历即可,这里采用先序遍历的方法。
代码:
/** * 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) { return PrerderTraverse(p,q); } private: bool PrerderTraverse(TreeNode *p, TreeNode *q){ if(p==nullptr&&q==nullptr)return true; if(p==nullptr||q==nullptr)return false; if(p->val!=q->val){ return false; }else{ return PrerderTraverse(p->left,q->left)&&PrerderTraverse(p->right,q->right); } } };
可以将先序遍历部分写的更加简洁:
/** * 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) { if(p==nullptr&&q==nullptr)return true; if(p==nullptr||q==nullptr)return false; return (p->val==q->val)&&isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); } };