可以把上述的输出样式改成:输出平衡二叉树: 各节点因子为:的代码吗
时间: 2024-03-04 21:49:27 浏览: 16
当然可以,以下是将输出样式修改为“输出平衡二叉树: 各节点因子为:”的代码示例:
```python
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
self.height = 1
class AVLTree:
def __init__(self):
self.root = None
def insert(self, value):
def _insert(root, value):
if not root:
return Node(value)
elif value < root.value:
root.left = _insert(root.left, value)
else:
root.right = _insert(root.right, value)
# update height
root.height = 1 + max(self.get_height(root.left), self.get_height(root.right))
# check balance factor
balance_factor = self.get_balance_factor(root)
# balance the tree
if balance_factor > 1 and value < root.left.value:
return self.right_rotate(root)
if balance_factor < -1 and value > root.right.value:
return self.left_rotate(root)
if balance_factor > 1 and value > root.left.value:
root.left = self.left_rotate(root.left)
return self.right_rotate(root)
if balance_factor < -1 and value < root.right.value:
root.right = self.right_rotate(root.right)
return self.left_rotate(root)
return root
self.root = _insert(self.root, value)
def left_rotate(self, root):
new_root = root.right
root.right = new_root.left
new_root.left = root
root.height = 1 + max(self.get_height(root.left), self.get_height(root.right))
new_root.height = 1 + max(self.get_height(new_root.left), self.get_height(new_root.right))
return new_root
def right_rotate(self, root):
new_root = root.left
root.left = new_root.right
new_root.right = root
root.height = 1 + max(self.get_height(root.left), self.get_height(root.right))
new_root.height = 1 + max(self.get_height(new_root.left), self.get_height(new_root.right))
return new_root
def get_height(self, root):
if not root:
return 0
return root.height
def get_balance_factor(self, root):
if not root:
return 0
return self.get_height(root.left) - self.get_height(root.right)
def print_tree(self):
def _print_tree(root):
if not root:
return
print(root.value, end=': ')
if root.left:
print(root.left.value, end=', ')
else:
print('None', end=', ')
if root.right:
print(root.right.value, end='')
else:
print('None', end='')
print(' (bf:', self.get_balance_factor(root), end=')\n')
_print_tree(root.left)
_print_tree(root.right)
print('输出平衡二叉树: 各节点因子为:')
_print_tree(self.root)
```
注意,这里修改的只是`print_tree()`函数中的输出语句,其他代码保持不变。