BST级,找到价值

时间:2017-02-27 22:46:27

标签: python algorithm

我遇到了BST问题;我写了一个代表BST的类,但我无法返回TrueFalse是否有一个数字在BST中。知道它为什么总是返回None?当我询问根时,它只给出了正确的答案。

class DrzewoBST:
    def __init__(self, value = None):
        self.val = value
        self.left = None
        self.right = None

    def __str__(self):
        return "[%s, %s, %s]" % (self.left, str(self.val), self.right)

    def wstawianie(self, wartosc):
        if self is None:
            self = DrzewoBST(wartosc)
        if wartosc < self.val:
            if self.left is None:
                self.left = DrzewoBST(wartosc)
            else:
                self.left.wstawianie(wartosc)
        elif wartosc > self.val:
            if self.right is None:
                self.right = DrzewoBST(wartosc)
            else:
                self.right.wstawianie(wartosc)

    def wyszukiwanie(self, liczba):
        print(self.val)
        if self is None:
            return False
        if int(self.val) == liczba:
            return True
        if liczba < self.val:
            self.left.wyszukiwanie(liczba)
        else:
            self.right.wyszukiwanie(liczba)

     t = DrzewoBST(2)
     t.wstawianie(3)
     t.wstawianie(3)
     print(t.wyszukiwanie(3))

只有当我尝试t.wyszukiwanie(2)(这会给我True)时才有效,但当我尝试t.wyszukiwanie(3)时,我得到False;我应该得到True,因为3是在BST。

1 个答案:

答案 0 :(得分:1)

因为wyszukiwanie没有返回任何内容。添加return声明。

if liczba < self.val:
    return self.left.wyszukiwanie(liczba)
else:
    return self.right.wyszukiwanie(liczba)