zoukankan      html  css  js  c++  java
  • 剑指Offer——对成的二叉树

    1、题目描述

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

    2、代码实现

    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        boolean isSymmetrical(TreeNode pRoot)
        {
            //1、边界检测:空树是对称的
            if (pRoot == null) {
                return true;
            }
            //2、先求出该树的镜像树
            TreeNode root = Mirror(pRoot);
            //3、把两棵树的比较结果进行返回,两棵树相同返回true,两棵树不相同返回false
            return isSymmetrical(pRoot, root);
        }
        //这个函数就是比较给定的两棵树是否相等的
         private boolean isSymmetrical(TreeNode pRoot, TreeNode root) {
             //边界值检测:如果两棵树都为空则两棵树是一样的,如果两棵树只有其中一棵树为空,那么两棵树
             //是不对称的
            if (root == null && pRoot == null) {
                return true;
            } else if (root == null || pRoot == null) {
                return false;
            }
             //边界值检测完毕比较两棵树的根结点值是否相等,如果相等,在递归的比较两棵树的左子树和右子树是否相等
            if (root.val == pRoot.val) {
                return isSymmetrical(root.left, pRoot.left) && isSymmetrical(root.right, pRoot.right);
            }
            return false;
    
        }
        //这个函数的作用就是求出给定根节点对应树的镜像树
        private TreeNode Mirror(TreeNode root) {
            if (root == null) {
                return null;
            }
            //创建一个新的根节点,然后把原根节点的左子树赋值给新创建根节点的右子树
            //把原根节点的右子树赋值给新创建根节点的左子树,最后返回新创建的根节点即可
            TreeNode tempRoot = new TreeNode(root.val);
            tempRoot.left = Mirror(root.right);
            tempRoot.right = Mirror(root.left);
            return tempRoot;
        }
    }
    

      

  • 相关阅读:
    Python装饰器实现几类验证功能做法(续)
    10周年整
    年中review
    Javascript 模块化开发上线解决方案
    AMDJS编译工具
    第三方组件接入方案(演示文稿图片)
    代码打包预处理工具
    manifest资源提取工具
    也来山寨一版Flappy Bird (js版)
    2014 todo list
  • 原文地址:https://www.cnblogs.com/BaoZiY/p/11183620.html
Copyright © 2011-2022 走看看