2019年12月6日

Leetcode_938

説明タイトル:BSTは区間[L、R]との要素を見つけます。

私の解決策:前順走査、1つのチェックずつ、計算和、再帰的な実装。

コードの一部:

ボイドプレオーダー(ツリーノード*根、int型の L、INT R、INT和){
     場合(ルート== NULL)
         のリターン; 
    プレオーダー(ルート - > 左、L、R、合計)。
    もし(root->ヴァル> = L && root->ヴァル<= R)
        の和 + = root-> ヴァル。
    プレオーダー(ルート - > 右、L、R、合計)。
 }

; sub_root->値> R場合、プレオーダー(sub_root->、L、左BST、プレオーダー(sub_root->右、L、R)を、一つずつ、sub_root->ヴァル<Lをチェックする必要がない場合:反射質問の後R&LT)。

     否则、返回sub_root->ヴァル+プレオーダー(sub_root->左、L、R)+プレオーダー(sub_root->右、L、R)。

コードの向上:

/ * * 
 *バイナリツリーノードの定義。
 *構造体のTreeNode { 
 * INTヴァル。
 *のTreeNode *左; 
 *のTreeNode *右; 
 *ツリーノード(INT X):ヴァル(x)は、左(NULL)、右(NULL){} 
 *}。
 * / 
クラスソリューション{
 パブリックINT rangeSumBST(ツリーノード*根、int型の L、INT R){
         場合(ルート== NULL)
             戻り 0 もし(root->ヴァル< L)
             リターン rangeSumBST(root-> 右、L、R)。
        それ以外の 場合(root->値> R)
             を返す rangeSumBST(root-> 左、L、R)。
        他の
            リターン root->ヴァル+ rangeSumBST(root->左、L、R)+ rangeSumBST(root-> 右、L、R); 
    } 
}。

* - 今日はそれ*ブラシのタイトルの最初の日であります

おすすめ

転載: www.cnblogs.com/Jovesun/p/12000154.html