101. Symmetric Tree

来源:互联网 发布:淘宝类目选错会怎么样 编辑:程序博客网 时间:2024/06/13 15:44

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree [1,2,2,3,4,4,3] is symmetric:

    1   / \  2   2 / \ / \3  4 4  3

But the following [1,2,2,null,3,null,3] is not:

    1   / \  2   2   \   \   3    3
迭代法:
对于所有子节点,首先判断是否都存在子节点。如果存在子节点的时候,首先判断left和right的值是否相同,然后判断子节点是否存在子节点,如果都没有子节点则true,如果只有一部分没有,返回false。然后如果子节点都有子节点,继续对(left.left,right.right)以及(left.right,right.left)进行判断
其实所有的都可以看成是四个元素的组合。
class Solution {    public boolean isSymmetric(TreeNode root) {        if(root==null)            return true;                return isChildSymmetric(root.left,root.right);    }        public boolean isChildSymmetric(TreeNode left,TreeNode right){                if(left==null||right==null)            return left==right;        else{            if(left.val!=right.val)                return false;            return isChildSymmetric(left.left,right.right)&&isChildSymmetric(left.right,right.left);        }    }}

原创粉丝点击