【问题标题】:Binary Search Tree fail to insert二叉搜索树插入失败
【发布时间】:2020-10-26 14:13:23
【问题描述】:

仅向根插入值时效果很好。但是当涉及到插入其他节点时,它无法插入,我唯一得到的是根值。代码如下:

class BinarySearchTree():
class BinarySearchTreeNode():
    def __init__(self,leftchildnode,rightchildnode,item):
        self.leftchildnode = leftchildnode
        self.rightchildnode = rightchildnode
        self.item = item

def __init__(self):
    self.root = None

def insert(self,item):
    if self.root == None:
        self.cur = self.BinarySearchTreeNode(None,None,item)
        self.root = self.cur
    else:
        self.recursiveinsert(self.root,item)

def recursiveinsert(self,node,item):
    if node is None:
        node = self.BinarySearchTreeNode(None,None,item)
    else:
        if item < node.item:
            self.recursiveinsert(node.leftchildnode,item)
        else:
            self.recursiveinsert(node.rightchildnode,item)

def inorderdisplay(self):
    self.recursive_inorder_display(self.root)
    
def recursive_inorder_display(self,BinarySearchTreeNode):
    if BinarySearchTreeNode != None:
        self.recursive_inorder_display(BinarySearchTreeNode.leftchildnode)
        print(BinarySearchTreeNode.item)
        self.recursive_inorder_display(BinarySearchTreeNode.rightchildnode)

tree = BinarySearchTree()
tree.insert(13)
tree.insert(2)
tree.insert(15)
tree.inorderdisplay()

一旦我运行inroder,我得到的唯一结果是13,你能指出错误在哪里吗?

【问题讨论】:

    标签: python data-structures binary-search-tree


    【解决方案1】:
    • 应该修改类 BinaryTree 中的 init 语句,

    • 您应该以递归方式传递左右元素来执行此操作 请尝试检查此 github 存储库以获取更多详细信息,

    #This should be changed to
        def __init__(self,leftchildnode,rightchildnode,item):
             self.leftchildnode = leftchildnode
             self.rightchildnode = rightchildnode
             self.item = item
    
    #Please use this for the structure
    
        def __init__(self, item):
             self.leftchildNode = None
             self.rightchildNode = None
             self.item = item
    

    所以你可以查看下面的 github repo 以获得详细的代码

    Please check the github repo here for detailed code

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      相关资源
      最近更新 更多