【发布时间】:2021-10-16 02:40:05
【问题描述】:
不是特定于任何语言,但我会在 python 中显示一些代码
def insert(self,i):
temp = self
while(True):
if i > temp.V:
if temp.R == None:
temp.R = node(None,None,i)
temp = temp.R
break
else:
temp = temp.R
else:
if temp.L == None:
temp.L = node(None,None,i)
temp = temp.L
break
else:
temp = temp.L
self = self.balance()
对于类节点
def __init__(self,left,right,val):
self.L = left
self.R = right
self.V = val
使用从上到下的方法,插入和平衡都是独立的功能,我想从抽象的角度来看这会很好吗??它还允许我迭代地进行插入[并且迭代比我所学的递归更快]
同时bottom to top方法在[大概更少]操作中进行平衡,但也需要与插入捆绑在一起才能工作。这也意味着我必须递归地插入元素,这比迭代成本更高。
如果我的推理有误,请纠正我,因为在我看来,这两种方法都不错。
另外,我有this example,我认为自上而下的方法比自下而上的方法更可取。
有人告诉我,自上而下的方法比自下而上的方法要慢,但我找不到任何支持或反对这一点的证据。
【问题讨论】:
-
AVL 节点通常存储余额信息。我在这里看不到这个。所以我不明白这是一个 AVL 树,以及如何有效地保持树的平衡。
标签: python data-structures binary-tree