问题标签 [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.

0 投票
7 回答
10540 浏览

recursion - 递归算法的迭代版本,以制作二叉树

鉴于此算法,我想知道是否存在迭代版本。另外,我想知道迭代版本是否可以更快。

这是某种伪蟒蛇...

该算法返回对树根的引用

0 投票
7 回答
72954 浏览

algorithm - 跳过列表与二叉搜索树

我最近遇到了一种称为跳过列表的数据结构。它似乎与二叉搜索树具有非常相似的行为。

为什么要在二叉搜索树上使用跳过列表?

0 投票
13 回答
84781 浏览

data-structures - 什么是二叉搜索树中的“内部节点”?

我正在互联网上搜索“内部节点”一词的定义。我找不到简洁的定义。我正在查看的每个来源都使用该术语而不对其进行定义,并且该用法并不能正确定义内部节点的实际含义。

以下是我主要关注的两个地方: Link假设内部节点是具有两个不为空的子树的节点,但没有说明原始树中的哪些节点是内部节点和外部节点。

http://www.math.bas.bg/~nkirov/2008/NETB201/slides/ch06/ch06-2.html似乎暗示内部节点只存在于适当的二叉树中,并没有产生太多有用的信息.

什么内部节点!?

0 投票
12 回答
130254 浏览

data-structures - 二叉搜索树的定义中是否允许重复键?

我试图找到二叉搜索树的定义,并且到处都在寻找不同的定义。

有人说对于任何给定的子树,左子键小于或等于根。

有人说对于任何给定的子树,右子键大于或等于根。

我的旧大学数据结构书说“每个元素都有一个键,没有两个元素有相同的键”。

bst 有一个通用的定义吗?特别是关于如何处理具有相同键的多个实例的树。

编辑:也许我不清楚,我看到的定义是

1) 左 <= 根 < 右

2) 左 < 根 <= 右

3) left < root < right,这样不存在重复的键。

0 投票
1 回答
3522 浏览

prolog - prolog递归查找最大节点

只是一个简单的二叉树,我想找到最大的节点。
示例树:t(t(t(nil,1,nil),2,t(nil,3,nil)),4,t(t(t(nil,8,nil),5,nil),6, t(nil,7,nil)))

我只是不能把它应用到序言中。在这里我显示每个节点。我得到了,但我不明白如何保存最大值并递归地保持它。

编辑:它检查所有叶节点,但忽略 t(nil,8,nil)

0 投票
3 回答
5643 浏览

java - Java TreeMap 排序选项?

有人告诉我,Java 类 TreeMap 使用了 RB 树的实现。如果是这种情况,如何在 TreeMap 上进行中序、前序和后序树遍历?

或者这是不可能的?

0 投票
8 回答
8692 浏览

data-structures - 想为“20 个问题”游戏将二叉树保存到磁盘

简而言之,我想学习/开发一种优雅的方法来将二叉树保存到磁盘(一般树,不一定是 BST)。这是我的问题的描述:

我正在实施一个“20 个问题”的游戏。我写了一棵二叉树,其内部节点是问题,叶子是答案。如果有人对您当前的问题回答“是”,则节点的左孩子是您要遵循的路径,而右孩子是“否”的答案。请注意,这不是二叉搜索树,只是左孩子为“是”而右孩子为“否”的二叉树。

如果程序遇到一个为空的叶子,程序会通过要求用户将她的答案与计算机正在考虑的答案区分开来,将一个节点添加到树中。

这很简洁,因为树会在用户播放时自行构建。不整洁的是我没有将树保存到磁盘的好方法。

我考虑过将树保存为数组表示形式(对于节点 i,左子节点为 2i+1,右节点为 2i+2,父节点为 (i-1)/2),但它并不干净,我最终得到大量浪费空间。

关于将稀疏二叉树保存到磁盘的优雅解决方案的任何想法?

0 投票
8 回答
7413 浏览

binary-tree - 使用二叉搜索树作为拼写检查器

想知道将二叉搜索树变成拼写检查器的最有效方法,方法是读入 1000 个单词的字典文件,然后让它检查另一个文档,说有几个段落。

0 投票
7 回答
2890 浏览

c# - 从头开始实现树

我正在尝试通过从头开始实现树来了解树。在这种情况下,我想用 C# Java 或 C++ 来做。(不使用内置方法)

所以每个节点都会存储一个字符,每个节点最多有 26 个节点。

我将使用什么数据结构来包含指向每个节点的指针?

基本上我正在尝试从头开始实现基数树。

谢谢,

0 投票
10 回答
87329 浏览

algorithm - 二叉树 vs. 链表 vs. 哈希表

我正在为我正在处理的项目构建符号表。我想知道人们对存储和创建符号表的各种方法的优缺点有何看法。

我进行了相当多的搜索,最常见的推荐是二叉树或链表或哈希表。以上所有的优点和缺点是什么?(在 C++ 中工作)