【剑指offer】28.对称的二叉树

28.对称的二叉树

面试题28. 对称的二叉树

难度简单25

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

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

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

1 / \ 2 2 \ \ 3 3

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

1.递归

时间复杂度:O(n)

空间复杂度:O(n) 最差情况下 二叉树退化成链表,系统使用O(n)大小的栈空间

   // 递归
        //1.如果root == null 返回 true
        //2.否则调用左右节点递归遍历
        //  a.root.left == null && root.right == null 返回true
        //  b.root.left == null || root.right == null || root.left.val != root.right.val  返回false
        //  c.递归下一层 
        public boolean isSymmetric(TreeNode root) {
           return  (root == null ) ? true : recur(root.left,root.right);
        }
    
        public boolean recur(TreeNode left,TreeNode right){
            if(left == null && right == null)  return true;
            if(left == null || right == null || left.val != right.val) return false;
            return recur(left.left,right.right) && recur(left.right,right.left);
        }
posted @ 2020-04-07 10:36  qxlxi  阅读(74)  评论(0编辑  收藏  举报