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

    相同题目:剑指58.对称的二叉树

    ☆☆☆☆方法1:递归。总体思路是判断两个子树相反位置上的值是否相等。

    ☆☆☆☆方法2:迭代

      需要注意:如果二叉树所有节点值都相等,但结构不同仍然不对称,因此需要把节点是 null 的情况考虑进来。

    class Solution {
        public boolean isSymmetric(TreeNode root) {
            /**
             *  方法1:递归
             */
            if (root == null) return true;
            return isEqual(root.left, root.right);
            /**
             *  方法2:迭代
             */
            /*
            if (root == null) return true;
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root.left);
            queue.offer(root.right);
            while (!queue.isEmpty()) {
                TreeNode cur1 = queue.poll();
                TreeNode cur2 = queue.poll();
                // 注意需要把节点是null的情况考虑进来,排除节点值相等但结构不相等的情况
                if (cur1 == null && cur2 == null) continue; // 注意是continue,接着判断后面的节点
                if (cur1 == null || cur2 == null) return false;
                if (cur1.val != cur2.val) return false;
    
                queue.offer(cur1.left);
                queue.offer(cur2.right);
    
                queue.offer(cur1.right);
                queue.offer(cur2.left);
            }
            return true;
            */
        }
        private boolean isEqual(TreeNode node1, TreeNode node2) {
            if (node1 == null && node2 == null) return true;
            if (node1 == null || node2 == null) return false;
            if (node1.val != node2.val) return false;
            return isEqual(node1.left,node2.right) &&
                    isEqual(node1.right,node2.left);
        }
    }
  • 相关阅读:
    规约先行-(六)并发处理
    MySQL选择合适的方式存储时间
    规约先行-(五)集合处理
    规约先行-(四)OOP 规约
    12.20-LaTex git workflow
    6.25-ROS 软件度量
    6.19-rosdoc_lite and 文档构建工具
    12.27-ros-decision making
    12.3-分级并发有限状态机-SMACH
    12.07-rostest学习
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/14171712.html
Copyright © 2011-2022 走看看