簡體   English   中英

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

[英]Binary Search Tree - Insert Method - Python

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:
        ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM