輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
平衡二叉樹:每個子樹的深度之差不超過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...