私は二分木(二分探索木ではない)の順序どおりの後継を見つけるためのコードを書いていました。それはただの練習問題です。ツリーの概念をブラッシュアップするのが好きです。
私は順番にトラバーサルを行い、前のノードを追跡していました。前のノードが、後継ノードを検索しているノードと等しくなるたびに、現在のノードを出力します。
void inOrder(node* root , node* successorFor) {
static node* prev = null;
if(!root)
return;
inOrder(root->left,successorFor);
if(prev == successorFor )
print(root);
prev = root;
inOrder(root->right,successorFor);
}
ソリューションが失敗する可能性のあるテストケースを探していましたか?そして、私のアプローチが正しいかどうか?そうでない場合は、どうすればよいですか?