Symmetric Tree

错误解法:中序遍历得到的数组是对称的,这是错误的解法

比如:1,2,3,3,#,2

表示的二叉树是

          1

2             3

       3     2

中序遍历是对称的,但实际上它不是对称的。


正确解法:

二叉树是一个对称二叉树的条件:

任意二叉树的节点的左右子树都是对称的。

T1,T2两棵树是对称的条件:

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

用递归就可以了

public boolean isSymmetric(TreeNode root) {
       if(root == null)return true;
       return isSym(root.left,root.right);
    }
    
    boolean isSym(TreeNode t1,TreeNode t2){
       if(t1 != null && t2!=null){
           if(t1.val == t2.val){
               return isSym(t1.left,t2.right) && isSym(t1.right,t2.left);
           }
       }
       if(t1 == null && t2 ==null)return true;
       return false;
    }


你可能感兴趣的:(Symmetric Tree)