2012-02-08 23 views
0

誰かが私を助けてくれることを願っています。私はプログラミングの専門家ではありませんが、Pythonを使ってバイナリツリーを学んで実験しています。バイナリ検索ツリー - 親ノードへの参照を保存する

以下は私が持っているコードであり、ノードの親ノードへの参照を保存しようとしましたが、親ノードの格納は葉ノードでは機能しません。ツリーを構築する過程でこれを行う方法はありますか?

また、ノードが「左か右か」であるかどうかを知りたいと思います。私は、ノードがTreeNode.leftまたはTreeNode.rightのインスタンスに格納されているのを見て、私はn._ の名前 _などのように、Pythonでこれを参照することができるかもしれないと思っていました。ノードが左か右かを見つける正しい方法を教えてください。

私の究極の目標は、レベルオーダートラバーサルを通してツリーを視覚化することです。

class TreeNode: 
left, right, data = None, None, 0 

def __init__(self,nodeData, left = None, right = None, parent = None): 
self.nodeData = nodeData 
self.left = left 
self.right = right 
self.parent = self 

class Tree: 
def __init__(self): 
    self.root = None 

def addNode(self, inputData): 
    return TreeNode(inputData) 

def insertNode(self, parent, root, inputData): 
    if root == None: 
    return self.addNode(inputData) 
    else: 
    root.parent = parent 
    if inputData <= root.nodeData: 
    root.left = self.insertNode(root, root.left, inputData) 
    else: 
    root.right = self.insertNode(root, root.right, inputData) 
    return root 
+0

'class TreeNode: left、right、data = None、None、0'あなたが思うようにはできません。これら3つの変数は、各ノードの**一部ではありません**。より良いPythonチュートリアルを見つける必要があります。 –

+0

あなたの宿題に '宿題 'タグを付けてください。 –

答えて

3

これには多くの多くの問題があります。宿題なので、私は1つのヒントを提供します。 parentに設定されていないself.parentれるのはなぜ

def __init__(self,nodeData, left = None, right = None, parent = None): 
self.nodeData = nodeData 
self.left = left 
self.right = right 
self.parent = self 

+0

こんにちは、 ご返信ありがとうございます。これは単なる個人的なプロジェクトなので、宿題ではありません。 もう一度ありがとうございます アレックス ヒントありがとうございます。私はあなたの意見でコードにも何が間違っているかを知ることに興味があります。 – Alex2134

+0

http://Codereview.stackexchange.comは完全なコードレビューのためのより良い場所です。しかしながら。クラスレベルの変数 'class TreeNode:left、right、data = None、None、0'はこのコードでは役に立たない。そして 'def addNode(self、inputData)'に悪い名前が付けられています。そして、 'insertNode'実装が間違っています。 –

+0

これについての指導に感謝します。アレックス – Alex2134

関連する問題