AVL树中序遍历
创始人
2024-11-13 02:00:26
0

中序遍历 AVL 树可通过递归方式实现。以下是一个示例代码:

class AVLNode:
    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None
        self.height = 1

class AVLTree:
    def __init__(self):
        self.root = None

    def height(self, node):
        if node is None:
            return 0
        else:
            return node.height

    def balance_factor(self, root):
        if root is None:
            return 0
        return self.height(root.left) - self.height(root.right)

    def left_rotate(self, root):
        y = root.right
        T2 = y.left

        y.left = root
        root.right = T2

        root.height = 1 + max(self.height(root.left), self.height(root.right))
        y.height = 1 + max(self.height(y.left), self.height(y.right))

        return y

    def right_rotate(self, root):
        y = root.left
        T3 = y.right

        y.right = root
        root.left = T3

        root.height = 1 + max(self.height(root.left), self.height(root.right))
        y.height = 1 + max(self.height(y.left), self.height(y.right))

        return y

    def insert(self, root, key):
        if root is None:
            return AVLNode(key)
        elif key < root.key:
            root.left = self.insert(root.left, key)
        else:
            root.right = self.insert(root.right, key)

        root.height = 1 + max(self.height(root.left), self.height(root.right))

        balance = self.balance_factor(root)

        if balance > 1 and key < root.left.key:
            return self.right_rotate(root)
        if balance < -1 and key > root.right.key:
            return self.left_rotate(root)
        if balance > 1 and key > root.left.key:
            root.left = self.left_rotate(root.left)
            return self.right_rotate(root)
        if balance < -1 and key < root.right.key:
            root.right = self.right_rotate(root.right)
            return self.left_rotate(root)

        return root

    def in_order_traversal(self,

相关内容

热门资讯

第三分钟辅助挂!微乐广西麻辣,... 第三分钟辅助挂!微乐广西麻辣,竹间茶馆辅助,细节揭秘(有挂规律)一、AI软件牌型概率发牌机制”必胜“...
透视教学!wepoker怎设置... 【福星临门,好运相随】;透视教学!wepoker怎设置盖牌,wepoker黑侠破解,系统教程(了解有...
第2分钟辅助挂!微乐家乡脚本助... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩家在这款游戏中打...
透视真的!云扑克有透视,智星菠... 透视真的!云扑克有透视,智星菠萝有挂,可靠技巧(真的有挂);1、点击下载安装,插件透视分类一目了然!...
一分钟辅助挂!琼崖辅助软件,乐... 一分钟辅助挂!琼崖辅助软件,乐乐围棋入门辅助器,德州教程(了解有挂)1. ai辅助创建新账号,点击进...
透视插件!hhpoker智能辅... 透视插件!hhpoker智能辅助插件,wepoker辅助透视,曝光教程(有挂秘籍);AI辅助机器人普...
两分钟辅助挂!小松宿松游戏辅助... 两分钟辅助挂!小松宿松游戏辅助,山西扣点点脚本辅助器,安装教程(的确有挂)1、完成透视辅助安装,帮助...
透视有挂!拱趴大菠萝挂哪里,w... 透视有挂!拱趴大菠萝挂哪里,wepoker辅助软件价格,新版2025教程(的确有挂)是一款可以让一直...
第八分钟辅助挂!海商嘟咪互动辅... 第八分钟辅助挂!海商嘟咪互动辅助,老友广东辅助工具,技巧教程(有挂秘笈)一、软件透明挂的定义与意义1...
透视了解!约局吧如何查看是否有... 您好:这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌...