zoukankan      html  css  js  c++  java
  • [leetcode] Symmetric Tree

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

    For example, this binary tree is symmetric:

        1
       / 
      2   2
     /  / 
    3  4 4  3
    

    But the following is not:

        1
       / 
      2   2
          
       3    3
    

    Note:
    Bonus points if you could solve it both recursively and iteratively.

    https://oj.leetcode.com/problems/symmetric-tree/

    思路1:递归判断,注意null的处理。

    思路2:迭代写法,有空一起整理。

    public class Solution {
    
        public boolean isSymmetric(TreeNode root) {
            if (root == null)
                return true;
            return check(root.left, root.right);
        }
    
        private boolean check(TreeNode left, TreeNode right) {
            if (left == null && right == null)
                return true;
            if (left == null || right == null)
                return false;
            if (left.val != right.val)
                return false;
            return check(left.right, right.left) && check(left.left, right.right);
    
        }
    
        public static void main(String[] args) {
            TreeNode root = new TreeNode(10);
            root.left = new TreeNode(5);
            root.left.right = new TreeNode(9);
            root.right = new TreeNode(5);
            root.right.left = new TreeNode(9);
    
            System.out.println(new Solution().isSymmetric(root));
    
        }
    
    }
    View Code

    第二遍记录:null check can be easier

    class Solution {
        public boolean isSymmetric(TreeNode root) {
            if(root==null){
                return true;
            }
            return isSym(root.left, root.right);
        }
        
        private boolean isSym(TreeNode left, TreeNode right){
            if(left == null || right == null){
                return left == right;
            }
            
            return left.val==right.val && isSym(left.left, right.right) && isSym(left.right, right.left);
            
        }
        
    }

    参考:

    http://www.cnblogs.com/remlostime/archive/2012/11/15/2772230.html

  • 相关阅读:
    基于php socket(fsockopen)的应用实例分析
    php多线程的问题
    PHP之fsockopen提交POST数据讲解
    Sort List
    Insertion Sort List
    LRU Cache
    Reorder List
    Word Break II
    Word Break
    Copy List with Random Pointer
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3821304.html
Copyright © 2011-2022 走看看