遍历二叉搜索树 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