为什么将此python代码插入二进制搜索树不起作用?

问题描述 投票:-3回答:1

为什么此插入二进制搜索树的代码不起作用?

  class BinaryTreeNode:
        def __init__(self,key):
            self.key=key
            self.left=None
            self.right=None

    def insert(root,data):
        if root is None:
            root=BinaryTreeNode(data)
        else:
            if data>root.key:       
                insert(root.right,data)
            else:
                insert(root.left,data)y
python data-structures binary-search-tree
1个回答
0
投票

代码的逻辑看起来很好,但是我有一个顾虑。在这段代码中,返回是什么吗?

  class BinaryTreeNode:
    def __init__(self,key):
        self.key=key
        self.left=None
        self.right=None

def insert(root,data):
    if root is None:
        root=BinaryTreeNode(data)
    else:
        if data>root.key:       
            insert(root.right,data)
        else:
            insert(root.left,data)
    return

我在您的insert方法中添加了一个return,也许它现在可以运行。由于缺少return,您的方法将继续调用自身,但如果不返回,则堆栈将无法关闭,导致您的程序永远卡住。

我也创建了一个insert方法,也许您可​​以检查并测试是否错过了某个地方。

def insert(self, val):
    treeNode = Node(val)
    placed = 0
    tmp = self.root
    if not self.root:
        self.root = treeNode
    else:
        while(not placed):
            if val<tmp.info:
                if not tmp.left:
                    tmp.left = treeNode
                    placed = 1
                else:
                    tmp = tmp.left
            else:
                if not tmp.right:
                    tmp.right = treeNode
                    placed = 1
                else:
                    tmp = tmp.right
    return 
© www.soinside.com 2019 - 2024. All rights reserved.