我需要帮助解决以下问题。有一个搜索树(二进制搜索树),我需要找到一个特定的元素,以便搜索搜索树。但这只需要在伪代码中显示(因此不需要实际的搜索树,因此仅举个例子,根为75,需要搜索的元素为24)。
例如,步骤1:打印根目录,2:打印树....(直到找到正确的元素)。
到目前为止,我已经这样做了:
1) def findval (node,lookForElement):< br > 2)while node不为空:< br> 3)如果node.val等于lookForElement:< br > 4)break < br > 5)如果node.val小于lookForElement:< br > 6)node = node . right < br > 7)else:< br > 8)node = node . left < br > 9)返回node 10)如果node为空:11)打印“树为空”
但是我认为这只有在被搜索的元素是下一个元素的情况下才有效,但是被搜索的元素可能是下几个分支,那么我如何正确地循环呢?
你寻找节点的算法非常正确:
DEF FINDVAL(search)
LET node = root
WHILE node != null
PRINT_ELEMENTS(node)
IF node.value == search
BREAK
ELSE IF node.value < search
node = node.right
ELSE
node = node.left
RETURN node
缩进和空格使得return语句应该在WHILE循环之外变得更加清楚。你只能通过打破循环来达到它,这发生在你已经找到搜索值的时候(万岁!),或者当节点变为空时。如果node为空,那么我们需要的值不在树中。
使用以下树:
75
/ \
18 88
/ \ \
6 24 90
FINDVAL算法将显示以下内容:
6, 18, 24, 75, 88, 90
6, 18, 24
24
更新:要插入新值,如果它不存在:
DEF INSERTVAL(value)
LET node = root
WHILE node != null
PRINT_ELEMENTS(node)
IF node.value == value
PRINT("Value already exists")
RETURN
ELSE IF node.value < value
IF node.right == null
node.right = new Node(value)
RETURN
node = node.right
ELSE
IF node.left == null
node.left = new Node(value)
RETURN
node = node.left
root = new Node(value)
这段伪代码可能看起来有点难以理解,因为我们必须一次查看树中的两层,而不是一层。我们查看父节点,决定向左还是向右,如果方向为空,我们插入新值。如果它不为空,我们移动到该节点并重复。
现在,退出while循环的唯一方法仍然是“node”为空,或者从循环内部返回。但是在循环中,每次我们向下移动一个节点,首先我们检查它是否为空,如果是,我们插入并返回。所以“节点”的值唯一可以为空的时候是根为空的时候。
A strange game. The only winning move is not to play. Introduction This repository contains the pseudo-code of various algorithms and data structures necessary for Interview Preparation and Competitiv
我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!
编写一个函数,如果给定的二叉搜索树包含给定的值,则返回1,否则返回0。 例如,对于以下树: N1(值:1,左:null,右:null) n2(值:2,左:n1,右:n3) N3(值:3,左:null,右:null) 对contains(&n2,3)的调用应返回1,因为根位于n2的树包含编号3。 函数应该返回1,然而,它返回0或者根本不返回。
我们有一个自定义的职位类型hr priority,它有多个与之相关的自定义分类。这些分类法包含多个术语,每个帖子可以从这些分类法中分配1到多个术语。我们正在尝试设置一个过滤器,允许访问者在多个分类中通过这些术语的组合来搜索/过滤结果。 例如:文章"样本文章"在分类学"年份"中有术语"2018","组织"分类学中有术语"理事会成员","国家"分类学中有术语"加拿大"。文章“其他样本”中有“年份”一词
无论仓库里的代码量有多少,你经常需要查找一个函数是在哪里调用或者定义的,或者一个方法的变更历史。 Git 提供了两个有用的工具来快速地从它的数据库中浏览代码和提交。 我们来简单的看一下。 Git Grep Git 提供了一个 grep 命令,你可以很方便地从提交历史或者工作目录中查找一个字符串或者正则表达式。 我们用 Git 本身源代码的查找作为例子。 默认情况下 Git 会查找你工作目录的文件。
搜索 调用地址 http://api.bilibili.cn/search 需要 App Key 参数 字段 必选 类型 说明 keyword true string 搜索的关键字,必须做URLencoding。 page false int 搜索结果分页选择 默认为第1页 pagesize false int 单页返回的记录条数,最大不超过100,默认为20。 order false strin