-
0 votesanswersviews
在广度范围内搜索二叉树中查找第一个空值
我正在尝试编写一个在二叉树上实现的二进制堆,但是我无法找到一种方法将新节点添加到堆的“底部”,即树中的第一个空值空间 - 第一次遍历 . 我已经有了一个有效的heapify函数,但我无法弄清楚如何在堆化之前添加一个新节点 . 我似乎无法想到一个可以找到我可以添加节点的空白空间的一致算法,每当我想出某些东西时,它就无法工作 . 我该怎么办? -
0 votesanswersviews
将元素添加到二叉树中的第一个非占用叶
现在我正在尝试用二叉树结构在Java中编写二进制堆,虽然我对如何在添加元素后“堆积”树有很好的把握,但是找到第一个未占用的叶子的逻辑在堆的底部逃避了我 . 我知道找到第一个未占用的叶子应该是一个广度优先的遍历,但我仍然无法弄清楚广度优先的遍历算法究竟是如何工作的 . -
0 votesanswersviews
为什么使用节点数据结构而不是数组创建二进制搜索树(BST)?
我见过的BST的大多数例子都是这种形式 Class Node { Node left; Node right; Key key; Value value; } 但是BST看起来像具有额外约束的二进制堆的特定形式,即左子值应小于父值,该值应小于右节点值 . 二进制堆很容易使用数组实现 . 为什么不使用数组创建BST,以确保维护这个额外的规则?这样做的缺点是什么?