繁体   English   中英

检查给定值是否在二叉搜索树中

[英]Check whether the given value is in the binary search tree

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

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)

我对代码做了一些改动,这就是我所做的:

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)

它仍然抛出属性错误,说 object 'treenode' 没有属性 'data'。

这是树节点 class:

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

请让我知道我哪里出错了,我该如何解决。

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)

如果目标值存在或不存在,此代码将找到您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM