【发布时间】:2021-03-07 07:41:11
【问题描述】:
完整披露:这是家庭作业。
我被要求在二叉树中返回排名,经过一些编码后,我得到了它的工作。
但是由于我的代码没有被接受,我注意到代码应该在O(log n)中运行
而减慢这一速度的罪魁祸首是我的尺寸方法:
public int size(Node node){
if (node != null) return (size(node.left) + 1 + size(node.right));
return 0;
}
我调用它是为了让所有元素的排名小于我需要查找的元素。
现在,我用谷歌搜索了所有内容,但显然不可能在 log n 时间内获得 BT 的大小?
那我需要怎么做呢?
【问题讨论】:
-
你怎么可能用比项目数更少的步数来计算?这就像在说“以 1 为增量,以 50 步从 1 计数到 100”。
-
普通的 BST 无法做到这一点。你想要的谷歌词是“订单统计树”
-
嗯,我在讲座中从未听说过这个词。甚至练习也提到了二叉树。不过谢谢,我会调查的!
-
这是一棵普通的二叉树吗?或者是否有一些您没有共享的节点排序,例如是BST吗?当你交替说“大小”和“等级”时,你到底要测量什么?
-
我认为它是 BST,因为左 = 更小,右 = 更大。大小我的意思是叶子的数量。等级是 i。 e.如果我们有叶子 1、2 和 3,叶子 2 的等级将为 1(索引为 0)
标签: java data-structures time-complexity binary-tree big-o