python(与int的非类型比较)

时间:2018-02-08 13:19:02

标签: python

实际上我试图制作二进制搜索树但是在self.value中有一个非类型..所以有一个错误说<不能用int和none类型。请帮我解决这个问题。谢谢你的帮助..我真的坚持了....................... .................................................. .................................................. ..................................

class Tree:
    def __init__(self,initval=None):
        self.value=initval
        if self.value:
            self.left=Tree()
            self.right=Tree()
        else :
            self.left=None
            self.right=None

        return


    def isempty(self):
        return (self.value==None)

    def isleaf(self):
        return (self.left.isempty() and self.right.isempty())

    # convert a leaf node to an empty node
    def makeempty(self):
        self.value=None
        self.left=None
        self.right=None

        return

    def copyright(self):
        self.value=self.right.value
        self.left=self.right.left
        self.right=self.right.right
        return


    def find(self,v):
        if self.isempty():
            return (False)

        if self.value==v:
            return (True)

        if v<self.value:
            return (self.left.find(v))

        if v>self.value:
            return (self.right.find(v))


    def insert(self,v):
        if self.isempty():
            self.value==v
            self.left=Tree()
            self.right=Tree()

        if self.value==v:
            return

        if v < self.value:
            self.left.insert(v)
            return
        if v >self.value:
            self.right.insert(v)
            return


    def maxval(self):
        if self.right.isempty():
            return(self.value)
        else:
            return (self.right.maxval())


    def delete(self,v):
        if self.isempty():
            return
        if v<self.value:
            self.left.delete(v)
        if v>self.value:
            self.right.delete(v)


        if v==self.value:
            if self.isleaf():
                self.makeempty()
            elif self.left.isempty():
                self.copyright()
            else:
                self.value=self.left.maxval()
                self.left.delete(self.left.maxval())
            return

    def inorder(self):
        if self.isempty():
            return([])
        else:
            return (self.left.inorder()+[self.value]+self.right.inorder())


    def __str__(self):
        return(str(self.inorder()))

l=Tree(4)
for i in [1,3,2,6,8,55,44]:
    l.insert(i)

print(l)

1 个答案:

答案 0 :(得分:0)

如果在if中添加条件,以确保实际具有左或右节点,并且在实际节点中具有不同于None的值,该怎么办?像这样的东西

instanceType

我没有测试过,但我认为这应该有效。希望它有所帮助。

作为旁注,你可以研究二叉树中的迭代搜索,它比递归方法更有效