zoukankan      html  css  js  c++  java
  • leetcode二叉树对称二叉树

    package binarytree.isSymmetric;
    
    import binarytree.untils.GenerateTreeNode;
    import binarytree.untils.TreeNode;
    
    /**
     * 101. 对称二叉树
     * 给定一个二叉树,检查它是否是镜像对称的。
     * <p>
     * <p>
     * <p>
     * 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
     * <p>
     * 1
     * / \
     * 2   2
     * / \ / \
     * 3  4 4  3
     * <p>
     * <p>
     * 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
     * <p>
     * 1
     * / \
     * 2   2
     * \   \
     * 3    3
     * <p>
     * <p>
     * 进阶:
     * <p>
     * 你可以运用递归和迭代两种方法解决这个问题吗?
     */
    public class isSymmetric {
    
        /**
         * 相同二叉树的变种,递归遍历
         *
         * @param root
         * @return
         */
        public static boolean isSymmetric(TreeNode root) {
    
    
            return isSymmetric(root.left, root.right);
        }
    
        public static boolean isSymmetric(TreeNode p, TreeNode q) {
            if (p == null && q == null) {
                return true;
            }
    
            if (p == null || q == null) {
                return false;
            }
    
            if (p.val != q.val) {
                return false;
            }
    
            return isSymmetric(p.left, q.right) && isSymmetric(p.right, q.left);
    
        }
    
        public static void main(String[] args) {
            Integer[] nums = {1, 2, 2, 3, 4, 4, 3};
            TreeNode treeNode = GenerateTreeNode.generateTreeNode(nums);
            System.out.println(isSymmetric(treeNode));
        }
    }
    
    
    
  • 相关阅读:
    14.挂载硬件设备
    13.Linux文件存储系统
    12.su 命令与sudo 服务
    11.文件访问控制列表
    10. 文件权限与归属
    9. Linux用户身份和能力
    8. Linux重要的环境变量
    7. Linux命令行的通配符、转义字符
    6. Linux输入输出重定向
    5. Linux文件目录管理和打包压缩与搜索命令
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/15691551.html
Copyright © 2011-2022 走看看