バイナリツリーアルゴリズム設計

バイナリツリーアルゴリズムの設計の一般的なラインは:はっきりノードは、フレームワークを投げ物事の残りの部分を行う必要があります。

無効トラバース(ツリーノードのルートを){
     // ルートは何をしますか?これを行うには。
    // 他の心配しないルート、スローフレーム
    トラバース(root.left); 
    トラバース(root.right); 
}

ここで思考のこのラインは、ウォームアップを理解するには、2つの簡単な例があります。

1.どのようにバイナリツリー内のすべてのノードの値はプラス1?

無効プラスワン(ツリーノードのルート){
     場合(ルート== NULLリターン; 
    root.val + = 1 ; 

    プラスワン(root.left)。
    プラスワン(root.right)。
}

2.どのように正確にバイナリ2かどうかを判断するには?

ブールisSameTree(ROOT1ツリーノード、ツリーノードroot2){
     //は、その後明らかに同じ空で、
    IF(ROOT1 == NULL && root2 == NULLリターン trueに;
     // ブランクは、空でない、明らかに異なる
    IF(= ROOT1 = nullの || root2 == nullを返し ;
     // 両方の非空ではなく、同じでもヴァル
    IF(root1.val = root2.val)!返す ; 

    // ROOT1とroot2の比率より以上の
    リターンisSameTree(root1.left、root2.left)
         && isSameTree(root1.right、root2.right)。
}

 

おすすめ

転載: www.cnblogs.com/aoeiuvAQU/p/11204865.html