LeetCode幸せブラシタイトル五十から二日間--110は平衡2分木

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

 

 

おすすめ

転載: www.cnblogs.com/Marigolci/p/11839643.html