目录
平衡二叉树的主要操作
"""FUN0 初始化"""
"""FUN1 由无序数组创建平衡二叉树 """
"""FUN2 向平衡二叉树添加节点 """
"""FUN3 将二叉树恢复平衡"""
"""FUN4 计算每个结点的height"""
"""FUN5 计算每个结点的balance"""
"""FUN6 左旋"""
"""FUN7 右旋"""
"""FUN9 中序遍历平衡二叉树,并打印结果"""
"""FUN10 打印平衡二叉树图形"""
"""FUN11 将平衡二叉树转化为普通的二叉树"""
AVL.py
"""
平衡二叉树
"""
from tree import *
class AvlTree(object):
"""FUN0 初始化"""
def __init__(self):
self.node = None
self.height = -1
self.balance = 0
"""FUN1 由无序数组创建平衡二叉树 """
def avl_create(self, arr):
for i in arr:
self.avl_insert(i)
"""FUN2 向平衡二叉树添加节点 """
def avl_insert(self, val):
node = TreeNode(val)
if self.node is None:
self.node = node
self.node.left = AvlTree()
self.node.right = AvlTree()
elif val < self.node.val:
self.node.left.avl_insert(val)
else:
self.node.right.avl_insert(val)
# 调整使平衡
self.avl_rebalance()
"""FUN3 将二叉树恢复平衡"""
def avl_rebalance(self):
# 计算平衡因子
self.avl_heights(False)
self.avl_balance(False)