问题标签 [search-tree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何从 regex-es 数组构建字符串匹配树?
我有动态(有时会更改)正则表达式数组,例如 URL 路径结构:
/(home)?$
-> 主页视图/news/(index)?$
->/news/([a-zA-Z0-9_]+)/?$
-> 新闻文章视图( arg_1 )
/news/([a-zA-Z0-9_]+)/reply_to_comment\?(.*)
-> 新闻评论回复视图( arg 1, arg 2 )
/(.+)
-> 404 视图( arg 1 )
如果有碰撞,第一个表达式是winner。例如,最后一个表达式匹配所有内容,但以防万一,之前没有表达式匹配它。或者 /news/index 可以匹配为文章,但索引在文章表达式之前,所以它获胜。
我想构建状态机/表达式树,我可以用它来匹配O(n)时间内的任何字符串,其中n是匹配字符串的长度,即我不关心构建该树所需的时间,但是无论表达式的数量如何,我都希望具有相同的匹配速度。
或者至少对于“有限”正则表达式,仅支持:+
, *
, ?
, []
, [^ ]
, ()
, $
. expr
将不以 开头的每个表达式^
都视为编写为^expr
。
prolog - 绘制查询搜索树时感到困惑?
我们正在使用以下知识库:
练习的问题是:
满足以下哪个查询?在相关的地方,给出所有导致成功的变量实例。
我被困在问题5上:
还要为查询 magic(Hermione) 绘制搜索树。
尽管我了解查询发生了什么,但我对如何绘制查询搜索树感到困惑。此外,在我们的查询(Hermione)中是一个变量这一事实也会导致更多的混乱?
请您介意指导我并解释当向 Prolog 提出这个查询时发生了什么?
谢谢
c++ - 数据结构 - Trie C++,插入单词。访问冲突读取位置
我正在将字典 Trie 编码为分配 C++ 。在单词中插入某些字母时,我不断收到错误消息,尤其是“l”和“t”,如果它们不是第一个字母。
这是错误
A4Tries.exe 中 0x00EC5392 处的未处理异常:0xC0000005:访问冲突读取位置 0x000032EC。
问题是 InsertTrie 函数。它在以下行中断
我很困惑,因为代码适用于大量测试词,然后输入像'sdfl'或'sfd','ffdf'会破坏程序。如果有人能发现问题,我将不胜感激。谢谢。
在主要
c - 打印功能未正确读取释放的值
我正在使用搜索树,并查看树是否结束,我检查它是否为空。我的问题是当我使用free()时指针值不会变为NULL。
我也尝试过使用指向 free 的指针,然后设置为 NULL,但它没有用。
在这种情况下,我想删除搜索树上的最大数字,但我的打印功能无法识别释放的值,而是打印 0。
storage - 回溯——将结果数据树存储在文件系统上的便捷方式
我创建了一个回溯算法,但一段时间后程序内存不足,因为结果量非常大。所以我即将找到一种将生成的数据树存储到文件系统而不是内存/RAM 的方法。
所以我正在寻找一种方便的方法来做到这一点,即尽可能少的 I/O 操作,但也要适度使用 RAM(最大≈2GB)。
一种方法是将每个节点存储到一个文件中,这可能会导致数十亿个小文件。或者将树的每个级别存储到一个文件中,但这些文件可能会变得非常大。如果这些文件变得太大,则内容将无法放入 RAM 中以读取数据并让我回到原来的问题。
为节点和其他链接提供文件是个好主意吗?
c - 如何从字符串创建二叉搜索树?
我试图创建一个莫尔斯编码器 - 解码器,我必须用二叉搜索树(而不是数组)来做。下面的部分应该采用一个字符数组(我们之前从一个文本文件创建),并基于它创建一个搜索树。
在 btree_base 字符数组中,我们有数据,格式为: “(字母)(摩尔斯电码)|(字母)(摩尔斯电码)|” 等等(例如,e .|t -|z --..| ...)。
注意:字符串包含数据的方式是通过从头到尾读取它,将创建一个平衡的搜索树
二叉树的创建是不成功的,我知道,因为当我运行代码时,btree_print 函数没有在控制台上打印任何内容,我发现这是因为传递了一个 NULL 指针。
我的问题是为什么会这样以及如何解决这个问题?是我弄乱了指针,还是在传递根指针时需要使用双重间接?我不太了解 ** 指针,所以我尽量避免使用它们。
algorithm - 如何找到树的分支因子
一个特定的搜索树在第 3 层有 6 个节点。在下一层,有 24 个节点。3 级的分支因子是多少?
答案是 4,但谁能告诉我为什么,我以为是 2。
python - 爬梯方式数的动态规划
问题是使用动态规划编写一个函数,用于爬升 N 步的方式数。鉴于一次只能爬 1 级或 2 级。
例如,如果 N=3,则函数应返回 [(1,1,1),(1,2),(2,1)]。我在 python 3 中编写了一个代码来计算。该代码运行良好,但与不使用动态编程的相同递归代码相比,当 N 达到 40 时,它需要相同的时间或 spyder(Anaconda) 应用程序崩溃。
它不应该比普通的更有效吗?
我在下面附上了 DP 代码
unit-testing - 通过 Google Apps 脚本中的闭包搜索树节点
我正在尝试解决的一般问题
我正在尝试在 Google Apps 脚本中实现按pkgName
属性排序的搜索树,最终目的是将软件项目中导入的元数据与包含类似数据的工作表进行比较。
为了防止构造函数的命名空间被“私有”属性污染,我使用了闭包。
执行
到目前为止,我的实现是:
表数据节点.gs
实用函数.gs
问题
我正在对代码进行单元测试,失败的测试用例包括以下步骤:
- 构建一个
SheetDataNode
node
- 构造另一个
SheetDataNode
otherNode
与第一个包名称相同但文件名不同的包 - 插入
otherNode
_node
- 期望:它现在有两个文件
- 实际:它只有一个:原版。
- 预期:此操作未设置左右子节点
- 实际:此操作未设置左右子节点
执行上述操作的代码如下所示:
这是失败断言的屏幕截图:
请记住,被测方法是这样的:
针对方法的测试addFiles
,它具有以下代码:
通过:
,与针对 的其他测试一样insertNode
,这意味着问题可能存在于我们如何尝试引用currentNode
ininsertNode
以进行数组属性修改。如果是这样,我不知道如何在 Google Apps 脚本中引用SheetDataNode
进行状态更改