这篇主要介绍一下判断两棵二叉树是否相同的方法
LeetCode 100. 相同的树
解释:
通过二叉树的递归前序遍历方法实现的判断二叉树是否相同
bool isSameTree(TreeNode* p, TreeNode* q) {
if (p == nullptr || q == nullptr) {
return p == nullptr && q == nullptr;
}
return p->val != q->val ? false :
(isSameTree(p->left, q->left) && isSameTree(p->right, q->right));
}
LeetCode 101. 对称二叉树
解释:
这道题的方法其实是相同二叉树思路的一个小小的改动,把“左=左”和“右=右”变成“左=右”和“右=左”
bool isSymmetric(TreeNode* root) {
return root == nullptr ? true : isSameTree(root->left, root->right);
}
bool isSameTree(TreeNode* r1, TreeNode* r2) {
if (r1 == nullptr || r2 == nullptr) {
return r1 == nullptr && r2 == nullptr;
}
return r1->val != r2->val ? false :
(isSameTree(r1->left, r2->right) && isSameTree(r1->right, r2->left));
}
如有侵权,请联系删除,如有错误或更好的解法,欢迎大家指正,谢谢