LintCode - 平衡二叉樹(普通)

版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

難度:容易
要求:

給定一個(gè)二叉樹,確定它是高度平衡的。對(duì)于這個(gè)問(wèn)題,一棵高度平衡的二叉樹的定義是:一棵二叉樹中每個(gè)節(jié)點(diǎn)的兩個(gè)子樹的深度相差不會(huì)超過(guò)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不是

思路:
可以用遞歸的思路求左右子樹的深度

/**
 * 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
        return maxDepth(root) != -1;
    }
    
    public int maxDepth(TreeNode node){
        if(node == null){
            return 0;
        }
        
        int leftDepth = maxDepth(node.left);
        int rightDepth = maxDepth(node.right);
        if(leftDepth == -1 || rightDepth == -1 || Math.abs(leftDepth  - rightDepth) > 1){
            return -1;
        }
        return Math.max(leftDepth,rightDepth) + 1;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹與前面介紹的線性表,棧,隊(duì)列等線性結(jié)構(gòu)不同,樹是一種非線性結(jié)構(gòu) 1.樹的定...
    Jack921閱讀 4,759評(píng)論 1 31
  • 數(shù)據(jù)結(jié)構(gòu)與算法--從平衡二叉樹(AVL)到紅黑樹 上節(jié)學(xué)習(xí)了二叉查找樹。算法的性能取決于樹的形狀,而樹的形狀取決于...
    sunhaiyu閱讀 7,805評(píng)論 4 32
  • 0. 什么是樹 數(shù)據(jù)的基本單位是數(shù)據(jù)元素,在涉及到數(shù)據(jù)處理時(shí)數(shù)據(jù)元素之間的關(guān)系稱之為結(jié)構(gòu),我們依據(jù)數(shù)據(jù)元素之間關(guān)系...
    安安zoe閱讀 540評(píng)論 0 0
  • 二叉搜索樹,平衡樹,B,b-,b+,b*,紅黑樹 二叉搜索樹 ? 1.所有非葉子結(jié)點(diǎn)至多擁有兩個(gè)兒子(Le...
    raincoffee閱讀 4,117評(píng)論 3 18
  • 一直以來(lái),我都很少使用也避免使用到樹和圖,總覺得它們神秘而又復(fù)雜,但是樹在一些運(yùn)算和查找中也不可避免的要使用到,那...
    24K男閱讀 6,857評(píng)論 5 14

友情鏈接更多精彩內(nèi)容