39得票6回答
反转二叉树(从左到右)

我在查看面试问题时,最近遇到了一个问题,问如何反转一般的二叉树,就像将其从右侧翻转到左侧。 例如,如果我们有以下二叉树: 6 / \ 3 4 / \ / \ 7 3 8 1 反转它将创建 6 / \ 4 3 / \ ...

13得票8回答
打印二叉树的边界

我在面试中被要求打印二叉树的边界。例如: 1 / \ 2 3 / \ / \ 4 5 6 7 / \ \ 8 9 10 答案将是:1、2、4、8、9、10、7、3。 我已经给出了以下的答案。 ...

15得票8回答
将哈希表与二叉搜索树进行比较

我们都知道,如果散列函数被很好地选择,则哈希表对于插入和查找都具有O(1)的时间复杂度。那么,我们为什么要使用二叉搜索树呢?只是因为设计完美散列函数很难吗? 我提出这个问题的原因是:我注意到标准C ++ STL具有用二叉搜索树实现的set和map,但没有哈希(不是指非标准的hash_set,...

7得票7回答
如何从深度优先遍历索引计算完美二叉树中节点的层级?

我有一颗完美的二叉树,即每个节点都是叶子节点或者有两个子节点,并且所有叶子结点都在同一层级。每个节点在深度优先顺序下有一个索引。 (例如,在具有3级的树中,根节点的索引为0,第一个子节点为1,第一个子节点的第一个子节点为2,第一个子节点的第二个子节点为3,第二个子节点为4,第二个子节点的第一...

9得票5回答
在红黑树中存储颜色信息时如何节省内存?

我在Coursera算法课程中遇到了这个问题,意识到我不知道如何解决。但是,我对此有一些想法。脑海中浮现出的第一件事是使用优化的位集(如Java的BitSet)来获取映射节点的key -> color。所以,我们只需要为整个树分配一个位集,并将其用作颜色信息源。如果树中没有重复元素,那么...

7得票3回答
在Haskell中广度优先构建一个二叉树(非二叉搜索树)

我最近开始使用 Haskell,很可能只会用一小段时间。只是因为我在上大学的一个课程中被要求使用它来更好地理解函数式编程。 现在我遇到了一个小问题。我正在尝试按广度优先的方式构建它,但我觉得我的条件有些混乱,或者我的条件也可能是错误的。 因此,如果我输入 [“A1-Gate”, “Nort...

11得票7回答
空的二叉搜索树是否有效?

我有两个关于二叉搜索树的问题,都是关于空树的。 空树(null)是否有效? 没有子节点的根节点是否有效?

22得票14回答
中序遍历:哪个定义是正确的?

我有一篇关于二叉树(非BST)中序遍历(也称为pancaking)的学术课程文本: 中序遍历 在树的外部画一条线。从根节点的左侧开始,沿着树的外部走到根节点的右侧。尽可能靠近树,但不要穿过树。(将树的分支和节点视为坚实的障碍物。)节点的顺序是此行在它们下方经过的顺序。如果您不确定何时“经...

16得票11回答
二叉树的直径 - 更好的设计

我写了一段代码用于查找二叉树的直径。 需要以下建议: 我是否可以不使用类级别的静态变量来实现这个功能? 这个算法是否可行/有什么建议?public class DiameterOfTree { public static int diameter = 0; public stati...

22得票4回答
N个关键字可以创建的二叉搜索树的可能数量由第N个卡特兰数给出。为什么?

这个问题困扰我已经有一段时间了。我知道,如果给定N个键以二叉搜索树的形式排列,可以创建的可能树的数量对应于卡特兰数列中的第N个数字。 我一直在试图确定为什么会这样; 无法找到任何尝试直观解释它的东西,我求助于SO的集体知识。我发现了其他计算可能树的数量的方法,但它们似乎不太直观,并且没有提供...