题目
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
思路
从根节点开始遍历,将一棵树想象成两棵树,一个先序遍历,一个镜像遍历,判断是否相等
class Solution {
public:
bool f(TreeNode* r1,TreeNode* r2){
if(!r1&&!r2)
return true;
if(!r1||!r2)
return false;
if(r1->val!=r2->val)
return false;
return (f(r1->left,r2->right))&&(f(r1->right,r2->left));
}
bool isSymmetric(TreeNode* root){
return f(root,root);#左右都是根节点
}
};