查找二叉树节点有序排序的高效算法

Efficient algorithm for finding the in-order rank of a binary tree node

给定一棵二叉树(不一定是二叉搜索树)和该树中的一个节点,找到该节点的有序排名的有效算法是什么(最好在 Java 中)?

O(n) 算法可用于遍历(递归或迭代)。有更好的吗?感谢您的任何建议。

想象最坏的情况:每个节点只剩下一个child,于是整棵树就变成了一个链表。

如果给定一个根,要计算排名,您需要访问叶,在本例中成本为 O(n)。因此,在最坏的情况下,O(n) 是最好的情况,无需在节点中存储额外信息。