【问题标题】:Binary Search Tree - Insert Method - Python二叉搜索树 - 插入方法 - Python
【发布时间】:2020-03-22 07:59:42
【问题描述】:

这里是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'

【问题讨论】:

    标签: python binary-search-tree


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多