【发布时间】:2015-08-20 14:57:09
【问题描述】:
给定一棵二叉树(不一定是二叉搜索树)和该树中的一个节点,找到该节点的有序秩的有效算法是什么(最好在 Java 中)?
O(n) 算法可以通过遍历(递归或迭代)实现。有更好的吗?感谢您的任何建议。
【问题讨论】:
-
你会在树上做很多这样的查询吗?你能构造你的树,以便存储每个节点的子节点数吗?
-
你在寻找order statistics tree的变种,基本上。
-
@JerryFederspiel 实际上我曾考虑过这种缓存(即为节点添加子信息)。但是,我最初需要的是一个比
O(n)更好的一次性算法(不假设存储任何附加信息)。 -
@amit 顺序统计树是否适用于只是简单二叉树(不是搜索树)的树?
-
是的,你想要按顺序排列,这就是顺序统计树的算法所做的。碰巧在 BST 中,有序排名也是有序统计,这就是它的实际使用方式。
标签: java algorithm data-structures tree binary-tree