遍历二叉搜索树 Python
Traversing a Binary Search Tree Python
我正在努力掌握遍历二叉搜索树的窍门我认为我的代码是正确的,但我不断收到以下错误。
C:\Python33\python.exe "C:/Users/koopt_000/Desktop/College/Sophomore Semester 2/Computer Science 231/Chapter7/Test.py"
Traceback (most recent call last):
File "C:/Users/koopt_000/Desktop/College/Sophomore Semester 2/Computer Science 231/Chapter7/Test.py", line 16, in <module>
print(BST.preOrder(tree))
TypeError: preOrder() missing 1 required positional argument: 'tree'
Process finished with exit code 1
我正在尝试打印我的树的预购订单,但它不想工作,这是我的代码。
class TreeNode(object):
def __init__(self, data = None, left=None, right=None):
self.item = data
self.left = left
self.right = right
def __str__(self):
return str(self.item)
#------------------------------------------------------------
from TreeNode import TreeNode
class BST(object):
#------------------------------------------------------------
def __init__(self):
self.root = None
self.size = 0
#------------------------------------------------------------
def preOrder(self, tree):
if tree is None:
pass
else:
print(tree.item)
preOrder(tree.left)
preOrder(tree.right)
def postOrder(self, root):
if root is None:
pass
else:
self.postOrder(root.left)
self.postOrder(root.right)
print(root.item)
def inOrder(self, root):
if root is None:
pass
else:
self.inOrder(root.left)
print(root.item)
self.inOrder(root.right)
这是我的测试代码:
from BinarySearchTree import BST
from TreeNode import TreeNode
tree = TreeNode(1,
TreeNode(2,
TreeNode(4,
TreeNode(7,None,None),
None),
TreeNode(5, None, None)),
TreeNode(3,
TreeNode(6,
TreeNode(8, None, None),
TreeNode(9, None, None)),
None))
print(BST.preOrder(tree))
我知道这与我在 print 语句中为 'self' 添加内容有关,但我很困惑,我的大脑目前无法正常工作。有什么想法吗?
我做了一些更改后效果很好。
bst.py:
class TreeNode(object):
def __init__(self, data = None, left=None, right=None):
self.item = data
self.left = left
self.right = right
def __str__(self):
return str(self.item)
#------------------------------------------------------------
class BST(object):
#------------------------------------------------------------
def __init__(self):
self.root = None
self.size = 0
#------------------------------------------------------------
def preOrder(self, tree):
if tree is None:
pass
else:
print(tree.item)
self.preOrder(tree.left)
self.preOrder(tree.right)
def postOrder(self, root):
if root is None:
pass
else:
self.postOrder(root.left)
self.postOrder(root.right)
print(root.item)
def inOrder(self, root):
if root is None:
pass
else:
self.inOrder(root.left)
print(root.item)
self.inOrder(root.right)
something.py
from bst import BST
from bst import TreeNode
tree = TreeNode(1,
TreeNode(2,
TreeNode(4,
TreeNode(7,None,None),
None),
TreeNode(5, None, None)),
TreeNode(3,
TreeNode(6,
TreeNode(8, None, None),
TreeNode(9, None, None)),
None))
a = BST()
print(a.preOrder(tree))
输出:
bob@squids:~/Desktop$ python something.py
1
2
4
7
5
3
6
8
9
None
我正在努力掌握遍历二叉搜索树的窍门我认为我的代码是正确的,但我不断收到以下错误。
C:\Python33\python.exe "C:/Users/koopt_000/Desktop/College/Sophomore Semester 2/Computer Science 231/Chapter7/Test.py"
Traceback (most recent call last):
File "C:/Users/koopt_000/Desktop/College/Sophomore Semester 2/Computer Science 231/Chapter7/Test.py", line 16, in <module>
print(BST.preOrder(tree))
TypeError: preOrder() missing 1 required positional argument: 'tree'
Process finished with exit code 1
我正在尝试打印我的树的预购订单,但它不想工作,这是我的代码。
class TreeNode(object):
def __init__(self, data = None, left=None, right=None):
self.item = data
self.left = left
self.right = right
def __str__(self):
return str(self.item)
#------------------------------------------------------------
from TreeNode import TreeNode
class BST(object):
#------------------------------------------------------------
def __init__(self):
self.root = None
self.size = 0
#------------------------------------------------------------
def preOrder(self, tree):
if tree is None:
pass
else:
print(tree.item)
preOrder(tree.left)
preOrder(tree.right)
def postOrder(self, root):
if root is None:
pass
else:
self.postOrder(root.left)
self.postOrder(root.right)
print(root.item)
def inOrder(self, root):
if root is None:
pass
else:
self.inOrder(root.left)
print(root.item)
self.inOrder(root.right)
这是我的测试代码:
from BinarySearchTree import BST
from TreeNode import TreeNode
tree = TreeNode(1,
TreeNode(2,
TreeNode(4,
TreeNode(7,None,None),
None),
TreeNode(5, None, None)),
TreeNode(3,
TreeNode(6,
TreeNode(8, None, None),
TreeNode(9, None, None)),
None))
print(BST.preOrder(tree))
我知道这与我在 print 语句中为 'self' 添加内容有关,但我很困惑,我的大脑目前无法正常工作。有什么想法吗?
我做了一些更改后效果很好。
bst.py:
class TreeNode(object):
def __init__(self, data = None, left=None, right=None):
self.item = data
self.left = left
self.right = right
def __str__(self):
return str(self.item)
#------------------------------------------------------------
class BST(object):
#------------------------------------------------------------
def __init__(self):
self.root = None
self.size = 0
#------------------------------------------------------------
def preOrder(self, tree):
if tree is None:
pass
else:
print(tree.item)
self.preOrder(tree.left)
self.preOrder(tree.right)
def postOrder(self, root):
if root is None:
pass
else:
self.postOrder(root.left)
self.postOrder(root.right)
print(root.item)
def inOrder(self, root):
if root is None:
pass
else:
self.inOrder(root.left)
print(root.item)
self.inOrder(root.right)
something.py
from bst import BST
from bst import TreeNode
tree = TreeNode(1,
TreeNode(2,
TreeNode(4,
TreeNode(7,None,None),
None),
TreeNode(5, None, None)),
TreeNode(3,
TreeNode(6,
TreeNode(8, None, None),
TreeNode(9, None, None)),
None))
a = BST()
print(a.preOrder(tree))
输出:
bob@squids:~/Desktop$ python something.py
1
2
4
7
5
3
6
8
9
None