我正在用Python编写二叉树。我希望我的顺序遍历返回树值的数组。打印它们很好,但是数组永远不会让它回到变量我试图捕获它并且我的测试失败,并且不等于预期。
def inOrder(self, **kwargs):
root = self.assignRoot(kwargs)
arr = self.assignArr(kwargs)
# recurse down or 'visit' node
if root.left != None:
self.inOrder(arr=arr, root=root.left)
arr.append(root.value)
if len(arr) == self.length:
print('returning arr', arr)
return arr
if root.right != None:
self.inOrder(arr=arr, root=root.right)
我的测试看起来像这样:
from btree import Btree
from btree import Node
def test_inOrder_traversal():
bst = setUp()
print(bst.root.value)
arr = bst.inOrder()
print('arr', arr)
expected = [10, 15, 20, 25, 30]
assert arr == expected
print语句还显示arr == None,因此无法从inOrder()
正确返回编辑: 这解决了它。
def inOrder(self, **kwargs):
root = self.assignRoot(kwargs)
arr = self.assignArr(kwargs)
# recurse down or 'visit' node
if root.left != None:
self.inOrder(arr=arr, root=root.left)
arr.append(root.value)
if root.right != None:
self.inOrder(arr=arr, root=root.right)
if len(arr) == self.length:
print('returning arr', arr)
return arr