挿入の各ステップの後に、バイナリ検索ツリーの各ステージを印刷しようとしています。ただし、私のコードによって生成された出力は、最初のルート データ挿入ステップを見逃しているようで、特定の段階も繰り返します。これを行うためのクリーンで簡単な方法が必要です。を使用してそれを行う方法はありますか__dict__.values()
。
私のコード:
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def addNode(self, data):
if data < self.data:
if self.left is None:
self.left = Node(data)
else:
self.left.addNode(data) # recursively calling addNode method
else:
if self.right is None:
self.right = Node(data)
else:
self.right.addNode(data)
if not self.left is None and not self.right is None:
print self.left.data, self.data, self.right.data
elif self.left is None and not self.right is None:
print None, self.data, self.right.data
elif not self.left is None and self.right is None:
print self.left.data, self.data, None
if __name__ == '__main__':
n = Node(5)
#print n.__dict__.values()
n.addNode(3)
n.addNode(2)
n.addNode(8)
n.addNode(4)
生成される出力:
3 5 None
2 3 None
3 5 None
3 5 8
2 3 4
3 5 8
期待される出力:
None 5 None
3 5 None
2 3 None
3 5 8
2 3 4