110平衡2分木
イージー
それは、高さ、バランスの場合は、バイナリツリーを考えると、決定します。
この問題のために、高さ、バランスのバイナリツリーは次のように定義されています。
左右のサブツリーたバイナリツリー のすべての ノードが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 / \ 22 / \ 33 / \ 44
この質問は明らかにDFSで行うことです、質問は奥行き情報転送、私は情報のTreeNodeが変数を追加しました思っていた方法です
が、これは、コードので、質問の意味に明らかに反していますこの関数は、新たな深さで使用されるか、直接リターンを返す-1、-1の深さを表すものではありませんが、
プログラムの終了を示します。また、現在のテーマのか、単に事実で、この拡張することを示すために、クラスやグローバル変数に設定
彼は唯一、あなたはそう長く変数がバランスを表して、バランスを必要とせずに特定の深さを問うかどうか尋ね、とは時に値を決定しますアンバランス、それが変数を変更することができます
クラスのTreeNode(オブジェクト): デフ __init__ (自己、X): self.val = X self.left = なし self.right = なし クラスソリューション(オブジェクト): デフisBalanced(オブジェクト、ルート): self.balanced = 真 デフ高さ(ルート): なら ないルートや ないself.balanced: リターン -1 L = 高さ(root.left) R = 高さ(root.right) もし ABS(LR)> 1 : self.balanced = Falseの リターン -1 リターン MAX(L、R)+1 高さ(ルート) リターン self.balanced