であるかどうかを確認しています...私はツリーは私は木がバランス探索木であるかないかどうかを検証し、検証方法を与えるために私を伝える練習面接の質問を持ってBSTまたはないPythonの
Class Node:
def __init__(self, k, val):
self.key = k
self.value = val
self.left = None
self.right = None
としてクラスを持っています
def tree_max(node):
maxleft = float('-inf') if not node.left else tree_max(node.left)
maxright = float('-inf') if not node.right else tree_max(node.right)
return max(node.value, maxleft, maxright)
def tree_min(node):
minleft = float('-inf') if not node.right else tree_min(node.left)
minright = float('-inf') if not node.left else tree_min(node.right)
return min(node.value, minleft, minright)
として
と木の最大値と最小値のための他の関数定義私の検証方法
def verify(node):
if tree_max(node.left) <= node.value and node.value <= tree_min(node.right):
if verify(node.left) and verify(node.right):
return True
else:
return False
else:
return False
として
私がBSTツリーを作成しようとしても、私が常にfalseになるような検証方法を実装しようとすると、私の問題が発生します。次のように私の実装は次のとおりです。どちらも、私がFalse与えている
root= Node(10, "Hello")
root.left = Node(15, "Fifteen")
root.right= Node(30, "Thirty")
print verify(root)
root = Node(10, "Ten")
root.right = Node(20, "Twenty")
root.left = Node(5, "Five")
root.left.right = Node(15, "Fifteen")
print verify(root)
...私の検証機能や、私の最小/最大機能に問題がある...任意の助けいただければ幸いです。
ツリーのバランスを取るべきかどうか?通常はBST = * Binary *検索ツリーであり、* Balanced *検索ツリーではないためです。あなたのアルゴリズムは、ツリーが平衡しているかどうかをチェックしていないようです... – Bakuriu
問題は 'node.value'が文字列で、' float( ' - inf') 'をセンチネル。 – Bakuriu