zoukankan      html  css  js  c++  java
  • lintcode : 平衡二叉树

    题目

     平衡二叉树

    给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 

    样例

    给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}

    A)  3            B)    3 
       /                   
      9  20                 20
        /                  / 
       15   7              15  7

    二叉树A是高度平衡的二叉树,但是B不是

    解题

    递归求高度

    判断左右孩子高度之差是小于等于1,这里还是需要递归的

    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    public class Solution {
        /**
         * @param root: The root of binary tree.
         * @return: True if this Binary tree is Balanced, or false.
         */
        public boolean isBalanced(TreeNode root) {
            // write your code here
            if(root == null)
                return true;
            int lft = depth(root.left);
            int rit = depth(root.right);
            if(Math.abs(lft-rit)<=1){
                return isBalanced(root.left)&&isBalanced(root.right);
            }
            else
                return false;
            
        }
        public int depth(TreeNode root){
            if(root ==null)
                return 0;
            if(root.left==null && root.right ==null)
                return 1;
            int lft = depth(root.left);
            int rit = depth(root.right);
            return Math.max(lft,rit) + 1;
        }
    }
    Java Code
  • 相关阅读:
    呵呵

    HDU 1878 欧拉回路
    HDU 3293 sort
    HDU 2714 ISBN
    神秀作偈
    大学之道
    写给自己过去疯狂的一年(2)(写在一个特别的时候)
    这几天我的生活就是这样的
    学习和研究计划
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5104005.html
Copyright © 2011-2022 走看看