我正在尝试找到二叉树后顺序遍历的第N个顺序。给定二叉树,给定N,我只需要实现代码即可找到第N个顺序。
我正在查看大量示例,并且我已经接近找到正确的解决方案,除了答案似乎离我们不远了,我不确定为什么。
这是我目前拥有的:
TreeMap<Integer, Node<T>> nodes = new TreeMap<Integer, Node<T>>();
int count = 0;
public void postOrder(Node<T> r) {
if(r == null) return;
postOrder(r.left);
postOrder(r.right);
nodes.put(count = count + 1, r);
}
/**
* Return the kth indexed element according to the Comparable sorted order of
* the tree. The leftmost node has index 0 and the rightmost node has index
* size() - 1.
*
* @param k
* index
* @return element, or null if k is out of range.
*/
public T findByOrder(int k) {
count = 0;
if(k < 0 || k > root.size() - 1) return null; // Are we out of bounds?
postOrder(root);
System.out.println(nodes.get(k).data);
return null; // Temporary return placeholder
}
我使用了最常见的算法,并使用了计数器和TreeMap来找到第N个顺序。