What is the difference between using a class and a dictionary to represent a binary tree in Python?
There really isn’t much difference in terms of semantics. The main difference is the usability of each method.
, , . .
? . , :
1
/ \
2 3
/ / \
5 7 9
. , node . :
tree[1][1]
, :
tree.right
, , node, node, . , 9. , :
tree[tree[1][1]][1]
, :
tree.right.right
, ? , , , .
, , . node. , , - , :
def insert(key, root, tree):
if root is None:
return Node(key)
elif key < root:
tree[root][0] = insert(key, tree[root][0], tree)
else:
tree[root][1] = insert(key, tree[root][1], tree)
return root
def min_value(node, tree):
current = node
while tree[current][0] is not None:
current = tree[current][0]
return current
def delete(root, key, tree):
if root is None:
return root
if key < root:
tree[root][0] = delete(tree[root][0], key, tree)
elif key < root:
tree[root][1] = delete(tree[root][1], key, tree)
else:
if tree[root][0] is None:
temp = tree[root][1]
return temp
elif tree[root][1] is None:
temp = tree[root][0]
return temp
temp = min_value(tree[root][1], tree)
tree[root] = tree[temp]
tree[temp] = tree.pop(root)
tree[root][1] = delete(tree[root][1], temp)
return root
, , left, right key.
, , ? , , . ? , .