簡體   English   中英

無法在python中的二進制搜索樹(BST)中獲得所需的結果

[英]Not getting required results in binary search tree(BST) in python

我用C ++制作了二進制樹,並試圖用python制作BST,所以我寫了如下代碼,但是什么也沒顯示! 我不知道發生了什么

class Node:
    def __init__(self, value, left=None, right=None):
        self.left = left
        self.right = right
        self.value = value
        pass


class Tree:
    def __init__(self):
        self.root = None
        pass

    def createNode(self, val):
        return Node(val)

    def insert(self, value):
        self.__insert(self.root, value)

    def __insert(self, rootptr, val):
        if rootptr is None:
            rootptr = self.createNode(val)
            return 0

        elif val < rootptr.value:
            if rootptr.left is not None:
                self.__insert(rootptr.left, val)
            else:
                rootptr.left = self.createNode(val)

        elif val > rootptr.value:
            if rootptr.right is not None:
                self.__insert(rootptr.right, val)
            else:
                rootptr.right = self.createNode(val)

        else:
            #TODO: raise exception
            print("Duplicate value!")



    def traversePreorder(self):
        self.__traversePreorder(self.root)

    def __traversePreorder(self, rootptr):
        if rootptr is None:
            return 1
        print(rootptr.value)
        self.__traversePreorder(rootptr.left)
        self.__traversePreorder(rootptr.right)




mytree = Tree()
mytree.insert(1)
mytree.insert(2)
mytree.insert(2)
mytree.insert(4)
mytree.insert(5)
mytree.traversePreorder()    

我在這里和那里進行了很多調整,但令我沮喪的是沒有任何效果。任何幫助將不勝感激。謝謝。

您正在嘗試使用C語言中的指針(通過引用調用),而該指針在Python中不起作用。

當第一個元素要插入到新的空樹中時:

mytree.insert(1)

方法insert被調用。 定義如下:

def insert(self, value):
    self.__insert(self.root, value)

根尚未設置,即self.rootNone None值傳遞給__insertrootptr

def __insert(self, rootptr, val):
    if rootptr is None:
        rootptr = self.createNode(val) # <== this will not change self.root !!
        return 0

但是正如您在附件注釋中看到的那樣,設置rootptr僅會更改此局部變量。

您可以將變量視為帶有名稱的標簽,並將其綁定到值上。 (來源: 本教程

暫無
暫無

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

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