我只是想知道是否有人能够帮助我。我试图做一个AVL树的横向颠倒。但我一直收到一个错误,我的功能名称是' r_in_order'没有定义。这里发生了什么,我错过了什么?这是代码:
class Node:
""" A node in a BST. It may have left and right subtrees """
def __init__(self, item, left = None, right = None):
self.item = item
self.left = left
self.right = right
class BST:
""" An implementation of a Binary Search Tree """
def __init__(self):
self.root = None
def recurse_add(self, ptr, item):
if ptr == None:
return Node(item)
elif item < ptr.item:
ptr.left = self.recurse_add(ptr.left, item)
elif item > ptr.item:
ptr.right = self.recurse_add(ptr.right, item)
return ptr
def add(self, item):
""" Add this item to its correct position on the tree """
self.root = self.recurse_add(self.root, item)
def r_count(self, ptr):
if ptr == None:
return 0
else:
return 1 + self.r_count(ptr.left) + self.r_count(ptr.right)
def count(self):
return self.r_count(self.root)
def r_height(self, ptr):
if ptr == None:
return 0
else:
return 1 + max(self.r_height(ptr.left), self.r_height(ptr.right))
def height(self):
return self.r_height(self.root)
def r_in_order(self, ptr):
if ptr != None:
r_in_order(ptr.left)
print(ptr.item + " ", end="")
r_in_order(ptr.right)
def in_order(self):
return self.r_in_order(self.root)
然后我用这个来测试代码:
import sys
from BST import BST
def main():
# Read each test case
line = sys.stdin.readline()
items = line.strip().split()
nums = [int(item) for item in items]
tree = BST()
for num in nums:
tree.add(num)
print("Print the elements of the tree in order:")
tree.in_order()
if __name__ == "__main__":
main()
答案 0 :(得分:1)
r_in_order
是BST
的一种方法。它只能在BST
实例上调用(或者在实例作为第一个参数的类上调用),但在r_in_order
本身的定义中,您尝试在没有实例的情况下使用它。从技术上讲,它并不存在于您尝试使用它的命名空间中。
您的功能定义应如下所示:
def r_in_order(self, ptr):
if ptr != None:
self.r_in_order(ptr.left)
print(ptr.item + " ", end="")
self.r_in_order(ptr.right)
答案 1 :(得分:0)
没有一般功能 r_in_order :您需要添加 self。来获取对您已经在内的方法的引用。在print语句中潜伏着一个语法错误。试试这个:
def r_in_order(self, ptr):
if ptr != None:
self.r_in_order(ptr.left)
print(ptr.item, " ", end="")
self.r_in_order(ptr.right)
这会运行,并产生以下内容(输入第一行)。
1 3 7 5 6 4 2
Print the elements of the tree in order:
1 2 3 4 5 6 7