これは、分割統治最小+最大値を見つけることです。左の部分木の最大値が、最小の右部分木よりも小さいよりもバイナリ検索ツリーのルートノード。
クラスのソリューション{
民間:
公衆:
BOOL isValidBST(ツリーノード*ルート){
(ルート== NULL)がtrueを返す場合は、
ツリーノード* max_left = root->左;
ツリーノード* min_right = root->右;
しばらく(max_left!= NULL && max_left->右!= NULL){
max_left = max_left->右;
}
しばらく(min_right!= NULL && min_right->左!= NULL){
min_right = min_right->左;
}
BOOL結果=真;
IF(max_left)結果= && root->ヴァル> max_left->ヴァルをもたらします。
(min_right)&& root->ヴァル<min_right->ヴァルもたらす=もたらす場合
isValidBST(root->左)&& isValidBST(root->右)&&結果を返します。
}
}。