首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查给定值是否在二进制搜索树中

检查给定值是否在二进制搜索树中
EN

Stack Overflow用户
提问于 2021-08-16 08:20:59
回答 1查看 34关注 0票数 0

这是我得到的代码,我需要对其进行更改。该函数在给定的BST中查找值,如果target在树中,则返回True。代码如下:

代码语言:javascript
复制
def member_prim(tnode, target):
    """
    Purpose:
        Check if target is stored in the binary search tree.
    Pre-Conditions:
        :param tnode: a treenode with the BST property
        :param target: a value
    Post-Conditions:
        none
    Return
        :return: True if target is in the tree
    """

    if tnode is None:
        return False
    elif target < tnode.data:
        right = tnode.right
        return member_prim(right, target)
    else:
        tnode.right = tnode.left
        return member_prim(tnode.right, target)

我对代码做了一些修改,下面是我所做的:

代码语言:javascript
复制
if tnode is None:
    return False
elif tnode.data is not target:
    return False
elif target > tnode.data:
    right = tnode.right
    return member_prim(right, target)
else:
    tnode.right = tnode.left
    return member_prim(tnode.right, target)

它仍然抛出属性错误,说对象'treenode‘没有属性'data’。

下面是treenode类:

代码语言:javascript
复制
class treenode(object):

    def __init__(self, data, left=None, right=None):
        """
        Purpose:
            Create a new treenode for the given data.
        Pre-conditions:
            data:  Any data value to be stored in the treenode
            left, right:  Another treenode (or None, by default)
        Post-condition:
            none
        """
        self.data = data
        self.left = left
        self.right = right

请让我知道我哪里出错了,以及我如何才能修复它。

EN

回答 1

Stack Overflow用户

发布于 2021-08-16 08:29:19

代码语言:javascript
复制
class treenode(object):

def __init__(self, data, left=None, right=None):
    """
    Purpose:
        Create a new treenode for the given data.
    Pre-conditions:
        data:  Any data value to be stored in the treenode
        left, right:  Another treenode (or None, by default)
    Post-condition:
        none
    """
    self.data = data
    self.left = left
    self.right = right

def trav(root, target):
    if not root:
        return False
    if root.data == target:
        return True
    if root.data > target:
        return trav(root.left, target)
    if root.data < target:
        return trav(root.right, target)

这段代码会告诉你目标值是否存在。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68799514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档