AVL树Python实现】的更多相关文章

# coding=utf-8 # AVL树Python实现 def get_height(node): return node.height if node else -1 def tree_minimum(node): temp_node = node while temp_node.left: temp_node = temp_node.left return temp_node def tree_maximum(node): temp_node = node while temp_node…
# coding=utf-8 # AVL树的Python实现(树的节点中包含了指向父节点的指针) def get_height(node): return node.height if node else -1 def get_maximum(node): temp_node = node while temp_node.right: temp_node = temp_node.right return temp_node def get_minimum(node): temp_node = n…
AVL树是带有平衡条件的二叉查找树,一般要求每个节点的左子树和右子树的高度最多差1(空树的高度定义为-1). 在高度为h的AVL树中,最少的节点数S(h)由S(h)=S(h-1)+S(h-2)+1得出,其中S(0)=1,S(1)=2. 如上图,分别为高度为0,1,2,3的AVL树所需要的最少节点数. 1.AVL树的实现,遍历与查找操作与二叉查找树相同. class Node(object): def __init__(self,key): self.key=key self.left=None…
建立AVL树 class AVLNode(object): def __init__(self,data): self.data = data self.lchild = None self.rchild = None self.parent = None self.bf = 0 class AVLTree(object) def __init__(self,li=None) self.root = None if li: for val in li: self.insert(self.root…
1,树 树是一种非常重要的非线性数据结构,直观的看,它是数据元素(在树中称为节点)按分支关系组织起来的结构,很像自然界中树那样.树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示.树在计算机领域中也得到了广泛应用,如在编译源程序时,可用树表示源程序的语法结构.又如在数据库系统中,树型结构也是信息的重要组织形式之一.一切具有层次关系的问题都可以用树来描述. 树(Tree)是元素的集合.树的定义是递归的,树是一种递归的数据结构.比如:目录结构.树是由n个结点组成的集合:如…
定义 能够在key插入时一直保持平衡的二叉查找树: AVL树 利用AVL树实现ADT Map, 基本上与BST的实现相同,不同之处仅在于二叉树的生成与维护过程 平衡因子 AVL树的实现中, 需要对每个节点跟踪"平衡因子balance factor"参数 \(balance Factor=height (left SubTree)-height(right SubTree)\) 平衡因子大于0,称为"左重left-heavy", 小于零称为"右重right-…
本文首发于我的公众号 Linux云计算网络(id: cloud_dev) ,专注于干货分享,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,欢迎大家关注,二维码文末可以扫. 一.AVL树 AVL树是一种平衡查找树,在前面的两篇文章:二叉搜索树 和 红黑树 中都提到过.由于二叉搜索树在某些特殊情况下是不平衡的(任意一个结点深度过大),因此其一些动态集合操作在最坏情况下的时间复杂度为O(n).因此提出一些对二叉搜索树效率改进的树结构使最坏时间复杂度降为O(lgn),AVL树和红黑树…
前言 上一篇文章讨论的二叉搜索树,其时间复杂度最好的情况下是O(log(n)),但是最坏的情况是O(n),什么时候是O(n)呢? 像这样: 如果先插入10,再插入20,再插入30,再插入40就会成上边这个样子 这个就像是双向链表,我们期望它是下面这个样子: 所以我们希望有一种策略能够将第一个图变成第二个图,或者说使树的结构不会产生像第一种图的形式 实现这种策略的一种方式是AVL树 AVL树 AVL树的名称是以它的发明家的名字命名的:Adel’son-Vel’skii和Landis 满足高度平衡属…
数据结构动图展示网站 树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>=1)个有限节点组成一个具有层次关系的集合.把它叫做"树"是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的.它具有以下的特点: 每个节点有零个或多个子节点: 没有父节点的节点称为根节点: 每一个非根节点有且只有一个父节点: 除了根节点外,每个子节点可以分为多个不相交的子树: 节点的度:一个节点含有的子树的…
今天的博客是在上一篇博客的基础上进行的延伸.上一篇博客我们主要聊了二叉排序树,详情请戳<二叉排序树的查找.插入与删除>.本篇博客我们就在二叉排序树的基础上来聊聊平衡二叉树,也叫AVL树,AVL是发明平衡二叉树的两个科学家的名字的缩写,在此就不做深究了.其实平衡二叉树就是二叉排序树的一种,比二叉排序树多了一个平衡的条件.在一个平衡二叉树中,一个结点的左右子树的深度差不超过1. 本篇博客我们就依照平衡二叉树的特点,在创建二叉排序树的同时要保证结点的左右子树的深度差不超过1的规则.当我们往二叉排序树…