我编写了一个递归程序来从最小到最大(按顺序)打印二叉搜索树的值,它可以用两种方式编写:
class TreeNode:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
class BinarySearchTree:
root = None
def in_order(self, root):
current = root
if current is None:
return
self.in_order(current.left)
print(current.data)
self.in_order(current.right)
t1.in_order(t1.root)
这种方式的问题是用户必须直接访问根目录(t1.root)
def in_order2(self):
self.inner_inorder(self.root)
def inner_inorder(self, current)
if current is None:
return
self.in_order(current.left)
print(current.data)
self.in_order(current.right)
t1.in_order2()
哪种写作形式被认为更正确?
您不需要
root
属性,只需发送 TreeNode
实例
class BinarySearchTree:
def in_order(self, root):
current = root
if current is None:
return
self.in_order(current.left)
print(current.data)
self.in_order(current.right)
node1 = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)
node4 = TreeNode(4)
node1.right = node2
node2.left = node3
node2.right = node4
tree = BinarySearchTree()
tree.in_order(node1)
# Output:
# 1
# 3
# 2
# 4
tree.in_order(node2)
# Output:
# 3
# 2
# 4