代码之家  ›  专栏  ›  技术社区  ›  Batool

在Python中使用顺序遍历(递归)打印二叉搜索树节点

  •  0
  • Batool  · 技术社区  · 8 年前

                10
              /    \
             5      15
              \
               8
    

    我想打印整个树,但我只打印前3个节点。我的问题是:

    --如何修复我的“有序”打印方法“插入”方法效果良好。

     class Tree:
      def __init__(self, value):
        self.node = value
        self.leftChild = None
        self.rightChild  = None
    
      def insert(self, value):
        if self.node is None:
            self.node = value
            return True
        if self.node is not value:
            if self.node > value:
                if self.leftChild  is None:
                    self.leftChild  = Tree(value)
                else:
                    return self.leftChild.insert(value)
            if self.node < value:
                if self.rightChild  is None:
                    self.rightChild  = Tree(value)
                else:
                     return self.rightChild.insert(value)
        else:
            return False
    
      def inorder(self):
          if self:  
              if self.leftChild:
                  return self.leftChild.inorder()
              print self.node
              if self.rightChild:
                  return self.rightChild.inorder()
    
    
    tree = Tree(10)
    tree.insert(5)
    tree.insert(8)
    tree.insert(15)
    tree.inorder()
    
    
    > 5
      8
      10
    
    1 回复  |  直到 8 年前
        1
  •  4
  •   Alex Hall    8 年前

    return 在里面 return self.leftChild.inorder() 结束对的呼叫 inorder self self.rightChild 可以处理。移除 回来 s、 无论如何,该方法不会返回任何内容。