Java 二叉树中从给定节点到根的路径

Java 二叉树中从给定节点到根的路径,java,recursion,binary-tree,Java,Recursion,Binary Tree,我已经试着解决这个问题有一段时间了,但我并没有真正解决它。本质上,给定某个二叉树和该树上的一个节点,如何找到从该节点返回到根的路径 有人对我如何实现这一点有想法吗?任何输入都将不胜感激,我衷心感谢新手程序员。为了找到从一个节点到另一个节点的路径,您必须递归地遍历树,从源节点向下遍历到其子节点、子节点,依此类推,直到到达目标节点。到达目标节点后,需要将到达该目标节点的节点路径回溯到根节点。实现这一点的一种方法是预顺序遍历的修改版本,其中首先检查根,然后检查其左子树,然后检查其右子树 public

我已经试着解决这个问题有一段时间了,但我并没有真正解决它。本质上,给定某个二叉树和该树上的一个节点,如何找到从该节点返回到根的路径


有人对我如何实现这一点有想法吗?任何输入都将不胜感激,我衷心感谢新手程序员。

为了找到从一个节点到另一个节点的路径,您必须递归地遍历树,从源节点向下遍历到其子节点、子节点,依此类推,直到到达目标节点。到达目标节点后,需要将到达该目标节点的节点路径回溯到根节点。实现这一点的一种方法是预顺序遍历的修改版本,其中首先检查根,然后检查其左子树,然后检查其右子树

public boolean getPath(root, value){
    if(root == null){
        return false;
    }
    if(root.value === value){
        System.out.println(root.value);
        return true;
    }
    int onPath = getPath(root.left, value);
    if(onPath){
        System.out.println(root.value);
        return true;
    }
    onPath = getPath(root.right,value);
    if(onPath){
        System.out.println(root.value);
        return true;
    }
    return false; //a path was never found
} 

在上面的方法中,我们将
根的值
与目标的
进行比较。如果它们不相等,我们检查左子树。如果目标不在左子树中,则检查右子树。如果仍然找不到目标,则返回
false
,以便在返回递归调用堆栈时,我们可以让节点的父节点知道没有从该节点到目标的路径。但是,如果找到了目标,那么我们返回
true
,这样在返回递归调用堆栈时,我们可以告诉节点的父节点及其父节点,等等,已经找到了路径。

给出您的代码。如何存储数据您的节点实现有父节点的概念,还是只知道它的子节点?提示:堆栈,DFS您可以递归执行非常感谢,Chris!真的很感谢你花时间解释这件事。@JimBouquet很高兴我能帮忙。祝你好运!