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); } }。
* - 今日はそれ*ブラシのタイトルの最初の日であります