二进制搜索树-插入方法-Python

问题描述 投票:0回答:1

这里是python的初学者。我正在尝试为二进制搜索树创建一个插入方法。当我给根以整数开头而不是仅仅传递self.root = BinaryTreeNode()时,insert方法起作用。您能告诉我如何在不传递整数的情况下完成此操作吗?谢谢!

class BinaryTreeNode:

    def __init__(self, data=None):
        self.data = data
        self.left = None
        self.right = None

    def __str__(self):
        return str(self.data)

class BinarySearchTree:

    def __init__(self, root = None):
        self.root = BinaryTreeNode()
        self.count = 0

    def __str__(self):
        return str(self.inOrder())


    # insert
    def insert(self, data):
        self.root = self.recursiveInsert(data, self.root)
        self.count+=1

    def recursiveInsert(self, data, node):
        if node is None:
            node = BinaryTreeNode(data)
        else:
            if data < node.data:
                if node.left is None:
                    node.left = data
                else:
                    self.recursiveInsert(data,node.right)
            else:
                if node.right is None:
                    node.right = data
                else:
                    self.recursiveInsert(data,node.left)

bst = BinarySearchTree()
bst.insert(5)

我得到的错误是:

in <module> bst.insert(5)
line 15, in insert self.root = self.recursiveInsert(data, self.root)
    if data < node.data:
TypeError: '<' not supported between instances of 'int' and 'NoneType'
python binary-search-tree
1个回答
0
投票

问题很简单,您从未考虑过新树的基本情况。将此中间子句添加到您的插入内容中:

    if node is None:
        node = BinaryTreeNode(data)
    elif node.data is None:
        node.data = data
    else:
        if data < node.data:
        ...
© www.soinside.com 2019 - 2024. All rights reserved.