返回顶部
首页 > 资讯 > 后端开发 > Python >如何在Python中实现avl树运算
  • 327
分享到

如何在Python中实现avl树运算

2024-01-23 05:01:57 327人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python执行avl树,代码详情:import sys #创建树节点 class Treenode(object): def __init__(self,key): self.key=key self.left=None se

python执行avl树,代码详情:

import sys
#创建树节点
class Treenode(object):
def __init__(self,key):
self.key=key
self.left=None
self.right=None
self.height=1

class AVLTree(object):
#插入节点
def insert_node(self,root,key):
#找到位置并插入节点
if not root:
return TreeNode(key)
elif key<root.key:
root.left=self.insert_node(root.left,key)
else:
root.right=self.insert_node(root.right,key)
root.height=1+max(self.getHeight(root.left),
self.getHeight(root.right))
#更新节点
balanceFactor=self.getBalance(root)
if balanceFactor>1:
if key<root.left.key:
return self.rightRotate(root)
else:
root.left=self.leftRotate(root.left)
return self.rightRotate(root)
if balanceFactor<-1:
if key>root.right.key:
return self.leftRotate(root)
else:
root.right=self.rightRotate(root.right)
return self.leftRotate(root)
return root
#删除节点
def delete_node(self,root,key):
#找到要删除的节点并删除
if not root:
return root
elif key<root.key:
root.left=self.delete_node(root.left,key)
elif key>root.key:
root.right=self.delete_node(root.right,key)
else:
if root.left is None:
temp=root.right
root=None
return temp
elif root.right is None:
temp=root.left
root=None
return temp
temp=self.getMinValueNode(root.right)
root.key=temp.key
root.right=self.delete_node(root.right,
temp.key)
if root is None:
return root
#更新节点
root.height=1+max(self.getHeight(root.left),
self.getHeight(root.right))
balanceFactor=self.getBalance(root)
#平衡树
if balanceFactor>1:
if self.getBalance(root.left)>=0:
return self.rightRotate(root)
else:
root.left=self.leftRotate(root.left)
return self.rightRotate(root)
if balanceFactor<-1:
if self.getBalance(root.right)<=0:
return self.leftRotate(root)
else:
root.right=self.rightRotate(root.right)
return self.leftRotate(root)
return root
#左旋转
def leftRotate(self,z):
y=z.right
T2=y.left
y.left=z
z.right=T2
z.height=1+max(self.getHeight(z.left),
self.getHeight(z.right))
y.height=1+max(self.getHeight(y.left),
self.getHeight(y.right))
return y
#右旋转
def rightRotate(self,z):
y=z.left
T3=y.right
y.right=z
z.left=T3
z.height=1+max(self.getHeight(z.left),
self.getHeight(z.right))
y.height=1+max(self.getHeight(y.left),
self.getHeight(y.right))
return y
#获取节点高度
def getHeight(self,root):
if not root:
return 0
return root.height
#平衡节点
def getBalance(self,root):
if not root:
return 0
return self.getHeight(root.left)-self.getHeight(root.right)
def getMinValueNode(self,root):
if root is None or root.left is None:
return root
return self.getMinValueNode(root.left)
def preOrder(self,root):
if not root:
return
print("{0}".fORMat(root.key),end="")
self.preOrder(root.left)
self.preOrder(root.right)
#输出avl树
def printHelper(self,currPtr,indent,last):
if currPtr!=None:
sys.stdout.write(indent)
if last:
sys.stdout.write("R----")
indent+=""
else:
sys.stdout.write("L----")
indent+="|"
print(currPtr.key)
self.printHelper(currPtr.left,indent,False)
self.printHelper(currPtr.right,indent,True)
myTree=AVLTree()
root=None
nums=[33,13,52,9,21,61,8,11]
for num in nums:
root=myTree.insert_node(root,num)
myTree.printHelper(root,"",True)
key=13
root=myTree.delete_node(root,key)
print("After Deletion:")
myTree.printHelper(root,"",True)

以上就是如何在Python中实现avl树运算的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何在Python中实现avl树运算

本文链接: https://lsjlt.com/news/556639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在Python中实现avl树运算
    Python执行avl树,代码详情:import sys #创建树节点 class TreeNode(object): def __init__(self,key): self.key=key self.left=None se...
    99+
    2024-01-23
  • C++如何实现AVL树
    本篇内容介绍了“C++如何实现AVL树”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!AVL 树的概念也许因为插入的值不够随机,也许因为经过某...
    99+
    2023-07-05
  • 怎么在C++中实现AVL树
    怎么在C++中实现AVL树?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。AVL树的介绍AVL树是一种自平衡的二叉搜索树,它通过单旋转(single rotate)和双旋转(do...
    99+
    2023-06-15
  • C++数据结构之AVL树如何实现
    这篇文章主要讲解了“C++数据结构之AVL树如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++数据结构之AVL树如何实现”吧!1.概念(1)二叉搜索树的缺点要手撕AVL树,我们首先...
    99+
    2023-07-02
  • 如何在Python中实现一个决策树算法?
    作者:禅与计算机程序设计艺术 1.简介 在机器学习领域,决策树(decision tree)是一种常用的模式分类算法。它能够将输入数据划分成不同类别或不同输出值,并据此做出预测。而对于复杂的数据分析任...
    99+
    2023-10-23
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • 怎么在Python中实现决策树算法
    怎么在Python中实现决策树算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.算法概述决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大...
    99+
    2023-06-15
  • 怎么在python中实现列表运算
    本篇文章为大家展示了怎么在python中实现列表运算,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其...
    99+
    2023-06-14
  • python如何实现决策树分类算法
    今天小编给大家分享一下python如何实现决策树分类算法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前置信息1、决策树决策...
    99+
    2023-07-02
  • 浮点运算如何在Java项目中实现
    这期内容当中小编将会给大家带来有关浮点运算如何在Java项目中实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java中浮点运算对于很多值浮点数都是采用其能够表示的离目标值最近的数来表示,这有可能会在计...
    99+
    2023-05-31
    java 浮点运算 ava
  • python如何实现比较运算符
    这篇文章将为大家详细讲解有关python如何实现比较运算符,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现比较运算符如果我们要逐一为某个类实现所有的比较运算符,你肯定会...
    99+
    2024-04-02
  • 怎么在python中实现矩阵乘法运算
    今天就跟大家聊聊有关怎么在python中实现矩阵乘法运算,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相...
    99+
    2023-06-14
  • Java中如何实现取模运算
    小编给大家分享一下Java中如何实现取模运算,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java%(取模运算)Java的取模运算实现算法public ...
    99+
    2023-06-26
  • Java如何实现决策树算法
    小编给大家分享一下Java如何实现决策树算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,...
    99+
    2023-05-30
    java
  • java算法如何实现红黑树
    这篇文章主要介绍了java算法如何实现红黑树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。红黑树定义红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计...
    99+
    2023-05-30
    java
  • 如何在C++项目中实现一个取余运算
    如何在C++项目中实现一个取余运算?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、C++中的整数除法C++中整数除法和取余用的是truncate除法(舍0取整),而给无符号类...
    99+
    2023-06-06
  • Python回归树如何实现
    本篇内容介绍了“Python回归树如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先导入库import pandas&nb...
    99+
    2023-06-30
  • python位运算符如何运算
    Python中的位运算符包括:与运算(&)、或运算(|)、异或运算(^)、取反运算(~)、左移运算()。下面是每个位运算符的运算规则...
    99+
    2023-10-11
    python
  • python字符串之间如何实现运算
    这篇文章给大家分享的是有关python字符串之间如何实现运算的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明当Python中的两个字符串可以大于(等于)或小于(等于)时,比较的是与字符串相对应的Unicode编...
    99+
    2023-06-20
  • python如何实现多个条件运算符
    这篇文章将为大家详细讲解有关python如何实现多个条件运算符,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。多个条件运算符两个可以在程序中组合两个或多个条件运算符,我们可以使用逻辑运算符。 但是,通过链接...
    99+
    2023-06-27
  • Python中如何实现真正的按位取反运算
    目录运算代码实例说明补充:Python的按位取反运算符的简单解析总结文章面向对象:对原理和编程不大有兴趣,只是需要用python实现一些运算功能的非计算机学生或从业者。大佬慎看防止血...
    99+
    2023-02-07
    python按位取反运算符 python 按位取反 python 取反
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作