劍指Offer 55 js 平衡二叉樹

2021-10-16 16:24:13 字數 957 閱讀 3714

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

平衡二叉樹:每個子樹的深度之差不超過1

示例 1:

輸入:root = [3,9,20,null,null,15,7]

輸出:true

// 1.函式功能:求二叉樹是否平衡

// 2.遞迴出口:樹為空時,平衡;如果不平衡,返回-1

// 3.等價表示式:

// 某二叉樹平衡 = 左子樹平衡 + 右子樹平衡 + 左右子樹樹深<1

function

isbalanced_solution

(proot)

function

balanced

(node)

//計算左右子樹樹深

const left =

balanced

(node.left)

;const right =

balanced

(node.right)

;//判斷是否平衡

if(left ===-1

|| right ===-1

|| math.

abs(left - right)

>1)

//如果平衡,返回樹深

?資料結構專欄:劍指 offer 題解 + js **

?github筆記 :ruoruochen github

劍指Offer55 平衡二叉樹

1.後序遍歷 後序遍歷就是從樹的最下層往上處理 寫法1 通過全域性變數res標識,由於判斷條件只有abs lheight rheight 即便res false,即從下往行的過程中某棵子樹已經不平衡了,依然要遍歷全部節點 時間o n 必須遍歷全部節點,空間o n 最壞情況退化為鍊錶時,遞迴深度為節點...

劍指offer 55 II 平衡二叉樹

題目鏈結 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,nu...

劍指offer55 II 平衡二叉樹

題目 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。分析 平衡二叉樹 balance tree 的定義是 二叉樹中任意節點的左右子樹的深度相差不超過1。注意是任意節點,並不只是根節點的 左深度 右深度 還有其子樹也必須是平衡二叉樹。從該定義也可知是利用遞迴來解決這個問題。class soluti...