【发布时间】:2021-04-25 10:02:55
【问题描述】:
在运行 python Binary Search Tree Traversal 的测试用例时遇到问题。它给出了一个错误:
======================================================================
ERROR: test_case_1 (__main__.TestProgram)
----------------------------------------------------------------------
Traceback (most recent call last):
File "BST_traversal.py", line 31, in test_case_1
self.assertEqual(root.inOrderTraversal(root,[]),inOrder)
TypeError: inOrderTraversal() takes exactly 2 arguments (3 given)
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
BST 的代码是:
import unittest
class BST:
def __init__(self,value):
self.value = value
self.left = None
self.right = None
def inOrderTraversal(self,array):
if self is not None:
inOrderTraversal(self.left,array)
array.append(self.value)
inOrderTraversal(self.right,array)
return array
class TestProgram(unittest.TestCase):
def test_case_1(self):
root = BST(10)
root.left = BST(5)
root.left.left = BST(2)
root.left.left.left = BST(1)
root.left.right = BST(5)
root.right = BST(15)
root.right.right = BST(22)
inOrder = [1, 2, 5, 5, 10, 15, 22]
preOrder = [10, 5, 2, 1, 5, 15, 22]
postOrder = [1, 2, 5, 5, 22, 15, 10]
self.assertEqual(root.inOrderTraversal(root,[]),inOrder)
if __name__ == '__main__':
unittest.main()
即使为 BST 开设了单独的课程也对我没有太大帮助。
【问题讨论】:
-
Python 的
selfargument is implicit。您将需要对您的实现进行重大调整(创建单独的独立函数,或修改inOrderTraversal以接受其他参数)。
标签: python binary-search-tree inorder