算法學(xué)習(xí)——平衡二叉樹(判斷)

LeetCode題目:110. 平衡二叉樹

題目要求如下 ↓ ↓ ↓ ↓ :

給定一個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義為:

一個二叉樹每個節(jié)點 的左右兩個子樹的高度差的絕對值不超過1。

示例 1:

給定二叉樹 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7
返回 true 。

示例 2:

給定二叉樹 [1,2,2,3,3,null,null,4,4]

       1
      / \
     2   2
    / \
   3   3
  / \
 4   4
返回 false 

結(jié)題思路

遞歸實現(xiàn)

  • 1、得到任意節(jié)點的深度
  • 2、計算出root節(jié)點的左右子節(jié)點的深度
  • 3、abs(left - right) > 1 進(jìn)行判斷
/// Swift 代碼實現(xiàn)
class Solution {
    /// 遞歸實現(xiàn)
    func isBalanced(_ root: TreeNode?) -> Bool {
        guard let root = root else {
            return true
        }
        return height(ofNode: root) >= 0
    }
    
    /// 輸出節(jié)點的深度
    func height(ofNode root: TreeNode?) -> Int {
        guard let root = root else {
            return 0
        }
        // 初始深度
        let sum = 1
        let leftHeight = height(ofNode: root.left)
        let rightHeight = height(ofNode: root.right)
        if leftHeight >= 0 && rightHeight >= 0 && abs(leftHeight - rightHeight) <= 1{
            return sum + max(leftHeight, rightHeight)
        }else{
            return -1
        }
    }
}


image.png

算法思想

  • 分治法(divide and conquer method)
    • 通俗講,分而治之。把一個大的問題分解成N個小問題,逐個擊破。
    • 把問題分解到足夠小,小到很容易求解為止,然后再將子問題合并成更大規(guī)模的問題的解。
    • 自底向上逐步求解出原來問題的解。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 分治算法 一、基本概念 在計算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個復(fù)雜的問題...
    木葉秋聲閱讀 5,388評論 0 3
  • 分治算法 一、基本概念 在計算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個復(fù)雜的問題...
    Java資訊庫閱讀 9,878評論 0 14
  • 任何一個可以用計算機(jī)求解的問題所需要的計算時間都與其規(guī)模有關(guān)。 以上五種可以理解為一種思想,而不是算法。 分治法 ...
    simplehych閱讀 734評論 0 1
  • 參考兩篇其他bolg總結(jié)的二叉樹:https://github.com/xy7313/lintcode/blob/...
    暗黑破壞球嘿哈閱讀 2,515評論 0 1
  • 五大常用算法之一:分治算法 基本概念: 把一個復(fù)雜的問題分成兩個或更多的相同的或相似的子問題。再把子問題分成更小的...
    親愛的破小孩閱讀 5,110評論 0 1

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