Symmetric Tree

来源:互联网 发布:越过长城走向世界 知乎 编辑:程序博客网 时间:2024/06/03 21:41

错误解法:中序遍历得到的数组是对称的,这是错误的解法
比如:1,2,3,3,#,2
表示的二叉树是
1
2 3
3 2
中序遍历是对称的,但实际上它不是对称的。

正确解法:
二叉树是一个对称二叉树的条件:
任意二叉树的节点的左右子树都是对称的。
T1,T2两棵树是对称的条件:

T1,T2根节点相等 && T1.left与T2.right对称 && T1.right与T2.left对称

用递归就可以了

bool isSymmetric(TreeNode* root) {        if(root == NULL)return true;        return isSymmetricHelp(root->left, root->right);    }bool isSymmetricHelp(TreeNode* t1, TreeNode* t2){    if(t1 == NULL && t2 == NULL)    {        return true;    }    if(t1 == NULL || t2 == NULL)    {        return false;    }    if(t1->val != t2->val)    {        return false;    }    return isSymmetricHelp(t1->left, t2->right)            && isSymmetricHelp(t1->right, t2->left);      }