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

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

作者: 抹茶口味注心饼干 | 来源:发表于2020-11-18 12:21 被阅读0次

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

        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))
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/njqciktx.html