python实现平衡二叉树的基本操作(创建、遍历、打印)

目录

平衡二叉树的主要操作

AVL.py

tree.py

github:


平衡二叉树的主要操作

    """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)

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值