社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

vic_smallie • 5 年前 • 1182 次点击  

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社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56591
 
1182 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Prune
Reply   •   1 楼
Prune    5 年前

问题很简单,你从来没有考虑过一棵新树的基本情况。将此中间子句添加到插入:

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