leetcode 110 平衡二叉樹

2021-09-28 23:46:54 字數 744 閱讀 6785

題目:給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。

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

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

**如下

class

solution

public

inthelp

(treenode root)

}

本題主要考驗做題者的遞迴函式設計能力。

解題之前,我們首先考慮,遞迴是否使用本方法直接進行,由於接受引數只有root,而我們需要對樹的深度進行比較,因此,我們需要額外方法的遞迴來實現判斷。

help的返回值應當設定為什麼最合理呢?顯然不是布林型別,因為我們最終返回值為布林型別,那麼也不需要設定該方法進行判斷,直接呼叫help就可以,那麼我們唯一選擇是int型別。

首先,設定出口,當root為null時,我們返回0,意味著此節點左右子樹高度差為0.

其次,最終返回值應當為兩種,-1,和其他值,其他值只存在0或1,-1代表高度差超過1,另外兩種則滿足平衡二叉樹條件。

首先定義int型別的left ,代表左孩子的高度差, 同理,定義right代表右孩子 的高度差,那麼這兩個值如果為-1時,允許直接返回-1,因為任意乙個節點不滿足平衡條件,則整體不滿足。

最後,我們返回左右子樹的高度差絕對值,檢測是否大於1,大於1則返回-1,即不是平衡二叉樹,不大於1,則獲得其最大深度加1,幫助下一次遞迴比較,如果此時是根節點呼叫,那麼返回值不等於-1,則為平衡二叉樹。

leetcode 110 平衡二叉樹 平衡二叉樹

leetcode 110 平衡二叉樹 平衡二叉樹要求所有節點的左右子樹的高度差小於1,因此,只需在遍歷的時候返回其左右子樹的深度。definition for a binary tree node.public class treenode treenode int val treenode int...

LeetCode110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...

LeetCode 110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...