バイナリツリーを考えると、その最大の深さを見つけます。
最大深さは、最も遠いリーフノードまでのルートノードから最長パスに沿ったノードの数です。
注:葉は子を持たないノードです。
例:
与えられたバイナリツリー[3,9,20、NULL、NULL、15,7]、
3 / \ 9 20 / \ 15 7
= 3その深さを返します。
効果の件名:
バイナリツリー、バイナリツリー・コンピューティングの深さを考えます
理解します:
ルートノードは、0の深空である;左の部分木のルートノードは、1の深空です。
再帰の深さ+1の各層。
コードC ++:
/ * * *バイナリツリーノードの定義。 *構造体のTreeNode { * INTヴァル。 *のTreeNode *左; *のTreeNode *右; *ツリーノード(int型X):(NULL)左のval(X)、右(NULL){} *}。 * / クラスソリューション{ パブリック: int型 MAXDEPTH(TreeNodeの* ルート){ 場合(ルート== NULL)の戻り 0 ; もし(root->左== NULL && root->右== NULL)リターン 1 。 INT左= MAXDEPTH(root-> 左)。 int型の右= MAXDEPTH(root->右); 返す右>左+左?1:右+ 1 ; } }。
結果:
で実行する場合: 12 MSの メモリ消費量: 19.3メガバイトを