二分探索ツリーにない最小の正の ([0, INT_MAX)) (最大の整数) 値を見つける方法を見つけようとしています。ツリーにはすべて正の整数があります。私は木の左側を横断しようと考えていました。次に、構造体の値を作成します。最小値の場合struct { int data; bool found; };
は戻ります。t/f
左側をトラバースすることでこれを行いました。ルート -> データ + 1 > 左 -> データの場合は、
左 -> データ + 1
、それ以外の場合は右に進みます。もし
ルート -> データ + 1 < 右 -> データ
、その後return root->data + 1
。それ以外の場合、right が null でない場合は戻りroot->data or right->data
、見つかった値は false になります。また、ツリーの最小値が 0 でない場合は、0 を返す必要があります。ただし、これが最善の方法であるかどうかはわかりません。
助けてくれてありがとう。
編集: 申し訳ありませんが、これを書いたのは昨夜、本当に疲れていたときでした。これをループ内で使用しているため、毎回配列に入れると時間がかかりすぎます。私は二分探索木を使用しているので、ループのたびに挿入と削除を 1 回だけ行うだけで済み、ツリーにない最小値を見つけるのに最小限の時間を費やすことができます。