簡體   English   中英

Python二叉樹

[英]Python binary tree

我實現了一個簡單的樹,並且遇到了這個問題。 當我嘗試搜索節點並且它存在時,即使它在lookup方法中的if語句上運行打印,它也會返回None。 當我查找根節點時,它運行正常。 其余所有節點均返回None。 有人可以解釋為什么嗎?

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

    def insert(self,data):
        if self.data == data:
            print "this item exists"
        elif self.data > data:
            if self.left == None:
                self.left = Node(data)
            else:
                self.left.insert(data)
        else:
           if self.right == None:
                self.right = Node(data)
           else:
                self.right.insert(data)

    def print_nodes(self):
        if self.left:
            self.left.print_nodes()
        print self.data
        if self.right:
            self.right.print_nodes()

    def lookup(self,data):
        if self.data == data:
            print 'exists'
            return 1
        elif self.data > data:
            if self.left != None:
                self.left.lookup(data)
            else:
                return -1
        elif self.data < data:
            if self.right != None:
                self.right.lookup(data)
            else:
                return -1


    def delete(self,data):
        if self.lookup(data)== -1:
            print "doesnot exists"
        else:
            if (not self.left) and (not self.right):
                self.data = None

root = Node(5)
#root.insert(3)
root.insert(3)
root.insert(2)
root.insert(6)
root.insert(61)
root.insert(62)
root.insert(63)

x = root.lookup(3)
print x

當項目不在根目錄中時,您將調用其子lookup()函數而不返回其值,因此,即使代碼在樹中某處找到了數據,您也將獲得None值而不是結果( 1 / -1

替換此行:

self.left.lookup(data)
...
self.right.lookup(data)

與線:

return self.left.lookup(data)
...
return self.right.lookup(data)

暫無
暫無

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

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