新しい一日を計算するために、事前に作られた喜喜喜、バーベキュー巨大な幸せああを食べます
NUM 110平衡二分木
各層はちょうど判定ルートの始まりを覚えて、仕事のバランスをとる必要があることに注意してください
/ * * *バイナリツリーノードの定義。 *構造体のTreeNode { * INTヴァル。 *のTreeNode *左; *のTreeNode *右; *ツリーノード(int型X):(NULL)左のval(X)、右(NULL){} *}。 * / クラスソリューション{ パブリック: BOOL isBalanced(のTreeNode *のルート){ 場合(ルート== NULL)を返す 真。 もし(ABS(も、getLevel(root->左)-getLevel(root->右))> 1 ) を返す 偽。 リターン(isBalanced(root->左)&& isBalanced(root->右)); } INTも、getLevel(ツリーノード* ルート) { 場合(ルート== NULL)戻り 0 。 返す最大(も、getLevel(root->左)、も、getLevel(root->右))+ 1 ; } }。
二分木111のNUM最小深さ
質問は難しいことではありませんが、それでも最初の時間を右ではない、これは最短、深さを求める全くない権利として、この時間は0で、右にビットを残しがない場合はご注意です。例えば、[1,2]ツリーに関連する問題を解決するために二階建て、音符です。
まず、ヌルノードとリーフノードを考慮して、第二、ルートが決定されていないことに注意してください
/ * * *バイナリツリーノードの定義。 *構造体のTreeNode { * INTヴァル。 *のTreeNode *左; *のTreeNode *右; *ツリーノード(int型X):(NULL)左のval(X)、右(NULL){} *}。 * / クラスソリューション{ パブリック: int型 minDepth(TreeNodeの* ルート){ 場合(ルート== NULL)の戻り 0 ; もし(root->左== NULL && root->右== NULL)リターン 1 。 もし(root->左== NULL)を返す minDepth(root->右)+ 1 。 もし(root->右== NULL)リターン minDepth(root->左)+ 1 。 戻り分(minDepth(root->左)、minDepth(root->右))+ 1 。 } }。