0

実際に私が知りたいのは、BSTのインオーダートラバーサルアルゴリズムを実装する方法ではなく、BSTの挿入、削除、およびプリオーダートラバーサルアルゴリズムのみを使用して実装する方法ではありません。
標準のBSTアルゴリズムの挿入、削除、および事前注文トラバーサルの実装が指定されていると仮定できます。BST inorder traversalを実装する方法は?

+0

これを見てください(リンク:http://en.wikipedia.org/wiki/Tree_traversal) – devsaw

答えて

0

Hmmm ...ルートノードには+、左ノードには1つ、右ノードには2つあります。事前注文は+ 1 2となり、順番には1 + 2となります。違いは1stと2ndが入れ替えられているため、挿入と削除があれば、各ルートノードの値をその左ノードの値で再帰的に交換してからpre -orderが戻ってくるツリーをたどると、インオーダートラバーサルが発生します。

私はこれが行く方法であるかどうかはわかりませんが、助けてくれることを願っています。

+0

アンカー、あなたはどこかに何か間違っているようです。要素を削除して挿入することはできますが、2つの要素を交換することはできません。すべての挿入操作と削除操作は、バイナリ検索プロパティを保護するためです。 –

0

私は解決策を見つけたと思います。 :)

私たちは先行トラバーサル、挿入、および削除の方法を持っています。

私たちにBSTが与えられたとします。

私たちは、指定されたBSTで事前注文トラバーサルメソッドを提供しています。ルートの左のサブツリーがヌルになるまで、各ルートを削除して挿入します(ルートが最初に親となります)。ノードは再帰的に削除され、挿入されます。

ノードがなくなるまでルートの削除を開始します。削除されたノードを配列または任意の場所に配置します。ソートされたノードの集合が得られます。 (つまり、ノードはソートされた順序で削除されます。最小単位など...)

関連する問題