A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

分析
从上而下递归扫描,只要发现左右结点不相同的返回false。

代码
public class Symmetry {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                TreeNode root = new TreeNode(1);
                root.left = new TreeNode(1);
                root.right = new TreeNode(1);
                root.left.left= new TreeNode(3);
                root.left.right = new TreeNode(3);
                root.right.left = new TreeNode(3);
                root.right.right = new TreeNode(3);
                System.out.println(symmetry(root));
        }
       
        public static boolean symmetry(TreeNode root){
                if(root == null){
                        return true;
                }
                return comRoot(root.left, root.right);
               
        }
    private static boolean comRoot(TreeNode left, TreeNode right) {
        // TODO Auto-generated method stub
        if(left == null) return right==null;
        if(right == null) return false;
        if(left.value != right.value) return false;
        return comRoot(left.right, right.left) && comRoot(left.left, right.right);
    }

}

---------------------
作者:另一个我竟然存在
来源:CSDN
原文:https://blog.csdn.net/qq_24034545/article/details/84344608
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马