劍指 Offer 55 II 平衡二叉樹

2021-10-23 13:39:40 字數 1230 閱讀 8132

題目描述:

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。

示例 1:

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

返回 true 。

示例 2:

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

返回 false 。

限制:

1 <= 樹的結點個數 <= 10000

方法1:

主要思路:

(1)使用後序遍歷獲得兩個子樹的深度,判斷兩個深度的值相差是否超過了1,若超過,則直接返回-1.後面的遞迴會在遇到-1時終止,否則就返回當前結點的深度;

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

int left_depth=

helper

(root-

>left);if

(left_depth==-1

)int right_depth=

helper

(root-

>right);if

(right_depth==-1

)if(abs

(left_depth-right_depth)

>1)

return

max(left_depth,right_depth)+1

;//返回當前結點的深度

}bool

isbalanced

(treenode* root)

helper

(root)

;return

helper

(root)!=-

1;//判讀最後的值是-1或者是實際的深度}}

;

劍指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...

劍指 Offer 55 II 平衡二叉樹

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹 二叉樹中任意節點的左右子樹的深度相差不超過1,則是平衡二叉樹 回顧遞迴求深度的方案,是先求得左右子樹的深度,然後進一步得到當前節點的深度,即先左右子樹,再根節點 可以直接加入乙個全域性變數記錄當前是否平衡,並額外引入乙個邏輯來比較子樹的深度 bfs迭...