2015-03-30 123 views
0

我正在努力获得遍历二叉搜索树的窍门我想我有我的代码,但我不断收到以下错误。遍历二叉搜索树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)) 

我知道它必须做一些事情跟我把东西给我打印语句“自我”,但我很为难,我的大脑目前没有正常运作。有任何想法吗?

回答

3

对我有一些改变,工作很好。

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)) 

输出:

[email protected]:~/Desktop$ python something.py 
1 
2 
4 
7 
5 
3 
6 
8 
9 
None