我试图从二叉搜索树中的特定节点中找到最远的节点。为此,我想实现树的深度优先搜索。但是,我不知道如何从底部节点开始。我有 preOrder()
, inOrder()
以及 posOrder()
但它们只对根节点有效。当我尝试在底部给它一个节点时,只返回那个节点,因为我似乎无法访问它的祖先。如何更改代码以执行此操作?
public Iterable<E> inOrder(){
List<E> snapshot = new ArrayList<>();
if (root!=null)
inOrderSubtree(root, snapshot); // fill the snapshot recursively
return snapshot;
}
private void inOrderSubtree(Node<E> node, List<E> snapshot) {
if (node == null)
return;
inOrderSubtree(node.getLeft(), snapshot);
snapshot.add(node.getElement());
inOrderSubtree(node.getRight(), snapshot);
}
暂无答案!
目前还没有任何答案,快来回答吧!