「树、递归、返回值」为什么我return成功还显示None?

问题代码(二叉树的搜索):

    def contains(self, value: object) -> bool:
        # if the tree is empty
        if self.root is None:
            return False
        else:
            if value == self.root.value:
                return True
            elif value < self.root.value:
                if self.root.left is None:
                    return False
                subtree = BST()
                subtree.root = self.root.left
                subtree.contains(value)
            else:
                if self.root.right is None:
                    return False
                subtree = BST()
                subtree.root = self.root.right
                subtree.contains(value)

main:

    tree = BST([10, 5, 15])
    print(tree.contains(15))
    print(tree.contains(-10))
    print(tree.contains(15))

debug看不出问题,return一切正常,但是输出结果为

None
None
None

问题:递归的返回值无法传递出外层函数
解决办法:递归调用的时候就要套上return
完整代码如下:

    def contains(self, value: object) -> bool:
        # if the tree is empty
        if self.root is None:
            return False
        else:
            if value == self.root.value:
                return True
            elif value < self.root.value:
                if self.root.left is None:
                    return False
                subtree = BST()
                subtree.root = self.root.left
                return(subtree.contains(value))
            else:
                if self.root.right is None:
                    return False
                subtree = BST()
                subtree.root = self.root.right
                return(subtree.contains(value))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容