【发布时间】:2017-01-28 16:10:28
【问题描述】:
这是一种自下而上的方法来检查树是否是 AVL 树。那么这段代码的工作原理是:
假设这是一棵树:
8
3 10
2
1
检查叶节点是否为叶节点(此处为 1)。然后,当具有数据 2 的节点是当前值时,它展开一次递归。 cl = 1 的值,同时它比较正确的树。 2 的右分支是空的,即没有任何子级,因此 avl_compare 将具有 (1, 0) 这是允许的。
在这之后我想给 cl 添加一个值,这样当数据为 3 的节点是当前值时,cl 的值 = 2。avl_check 是一个赋值问题。我自己完成了这项工作,但在这里我需要一些帮助来使用递归函数。
def avl_check(self):
cl = cr = 0
if(self.left):
self.left.avl_check()
cl+=1
if(self.right):
self.right.avl_check()
cr += 1
if(not self.avl_compare(cl,cr)):
print("here")
【问题讨论】:
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布代码并准确描述问题之前,我们无法有效地帮助您。具体来说,提供重现问题所需的代码,以及到目前为止的跟踪输出。
-
“我需要一些帮助”不是问题陈述。你的代码做什么?您已经描述了每个阶段的预期,但简单的测试表明您的代码没有达到您的预期。
标签: python recursion binary-tree avl-tree