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
  • 相关阅读:
    linux中iptables的用法
    Git介绍及安装配置
    第一个shell脚本
    Nginx配置优化解读
    Python中print格式化输出
    python 程序构架浅析
    Python 常用字符串操作
    Python入门学习:网络刷博器爬虫
    vSphere SDK for Java
    vROPS中获取虚拟机在VC中的UUID
  • 原文地址:https://www.cnblogs.com/theskulls/p/5104005.html
Copyright © 2011-2022 走看看