问题标签 [binary-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.
search - 二叉树搜索的迭代版本
用于在二叉搜索树中搜索节点(值为 k)的基本树搜索算法。“x”表示二叉搜索树的节点。
迭代版本:
(迭代算法的)第一行实际上不应该是 while (x ≠ NIL OR k ≠ key[x]) 而不是 (while x ≠ NIL and k ≠ key[x]) 吗?
顺便说一句,如果您想知道,这是来自著名的算法分析书籍之一。
tree - 如何在prolog中实现树算法的尾递归
如何将以下内容转换为尾递归版本。
由于分支的数量级为 2^n,因此维护单个累加器似乎是不可能的。
一个可能的解决方案是让累加器在每次迭代时将一个新的累加器添加到列表中。也许上述解决方案是最佳的?
提前致谢。
data-structures - 证明具有相同中序和前序遍历的二叉树是相同的?
有谁知道如何证明如果两棵二叉树具有相同的中序和前序遍历,那么它们是相同的?(也许通过证明你不能有两个具有相同中序和前序遍历的不同二叉树)
或者,展示一个可以反驳这一点的案例,或者展示为什么不能这样做?
(我承认,这纯粹是学术性的,但它不是家庭作业或其他任何东西。我的直觉告诉我这是真的,但我认为我从未在图表上做过任何证明。)
hash - 将哈希与二叉搜索树进行比较
我们都知道,如果哈希函数选择得当,哈希表的插入和查找时间都是 O(1)。那么,我们要使用二叉搜索树的原因是什么?仅仅因为一个完美的哈希函数很难设计?
在这里我怎么想出这个问题?我注意到标准C++ STL 有set
并且map
是用二叉搜索树实现的,但没有散列(不是在谈论非标准hash_set
,hash_map
)。而 Ruby 只有Hash
. 我想了解这种差异背后的原因。
c - 在 C 中实现 Tree 的指针问题
我正在为我的作业实现一个 avl 树。
问题是当我旋转树时,使用avl_swr(),按照print_avl()旋转成功,但是当函数返回调用者时,树损坏了。有任何想法吗?
.net - 显示二叉决策树的工具
我目前正在研究的系统涉及二元决策树的创建。其中很多。其中一些以 XML 格式存储,因此可以在需要时手动分析它们。
树结构基本上是嵌套的 <NODE> 标签。每个节点也可能有一些定义节点属性的子标签。
我想做的是以图形方式显示树木。垂直或水平无关紧要,但我想使用几何树形布局,例如:
...而不是文件系统浏览器中常用的布局,这不是显示二叉树的最佳方式。
是否有一个基于 .NET 的库,或者有一个独立的工具可以很好地做到这一点?
java - 用于在二叉树中查找最大独立节点集的 Java 算法
通过独立节点,我的意思是返回的集合不能包含直接关系的节点,不能同时包含父节点和子节点。我尝试使用谷歌,但没有成功。我认为我没有正确的搜索词。
一个链接,任何帮助将不胜感激。现在才开始做这个。
我需要返回实际的独立节点集,而不仅仅是数量。
math - 大 O(logn) 日志是 e 吗?
对于二叉搜索树类型的数据结构,我看到大 O 表示法通常记为 O(logn)。在 log 中使用小写的“l”,这是否意味着自然对数所描述的 log 底 e (n)?很抱歉这个简单的问题,但我一直无法区分不同的隐含对数。
java - 如何从字符串中填充二叉树,java
我想用基于这样的字符串的整数填充二叉树。
LT 是树的左侧部分的相同形式的表达式。与 RT 相同。一个有效的字符串应该是这样的:4(2(1)(3))(6(5)(7)
. 我怎样才能填满这棵树?这不是任何种类的排序树。所以它可以用节点填充每个“级别”。谢谢你的帮助。
java - Java递归二叉树
欢迎!我有一个名为 less 的递归公共静态方法,它接受一个树节点(原始二叉树,而不是真正的搜索树)和一个 int 参数,如果树中的所有值都小于整数,则返回该参数。所以,我会使用一个public class TN { public int value; public TN left, right; public TN(int v, TN l, TN r) {value = v; left = l; right = r;} }
所以,我的方法看起来像这样:
我想知道这是对的还是我错过了什么???我必须返回真假吗?