当前位置: 代码迷 >> python >> 二叉搜索树 - 插入方法 - Python
  详细解决方案

二叉搜索树 - 插入方法 - Python

热度:86   发布时间:2023-07-16 11:06:58.0

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

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'

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

    if node is None:
        node = BinaryTreeNode(data)
    elif node.data is None:
        node.data = data
    else:
        if data < node.data:
        ...