2016-05-24 7 views
0

左と右の子を指し示すノードがあると、何とかbstツリー全体のインオーダープリントが得られるのでしょうか?leaf to bst traversal

私は木がBSTであることを知っています。 そして、私が知っていることは、彼の子供たちが誰か(左右)であることを知っていることです。 ノードのルートと父親のどちらにもアクセスできません。 選択したノードがランダムに選択され、ツリー全体のinorderを返す必要があります。

私は仕事の面接でこの質問を受け取りましたが、解決できない質問があるのか​​、私には分かりませんでしたか?あなたが親ノードへのポインタを持っていないので、任意の助けを事前に

感謝:)

+0

あなたが開始したところから、あなただけのノードにアクセスすることができますので、「上向き」、あなたは木全体を印刷することはできません行き来することができない場合開始ノードよりも低いレベルです。 – Keiwan

+0

あなたの友人が問題を正しく理解していないか、またはインタビュアーが無知であり、あなたが正しい場合は、親ポインタが与えられていない場合はツリーを上向きにトラバースすることはできません –

答えて

2

は、あなたがこのような状況から行うことができる唯一のことは、下向きに移動することです。ツリー全体を印刷できる唯一のケースは、考慮されているノードがルートである場合です。

したがって、現在のノードをルートとするサブツリーのinorderプリントを取得できます。このノードがルートである場合、ツリー全体が印刷されます。そうでなければ、それはしません。

念のため、印刷INORDERは単純です:

def inorder(node): 
    if node == null: return 
    inorder(node.left) 
    print node.data 
    inorder(node.right)