【问题标题】:Path from given node to root in a binary tree二叉树中从给定节点到根的路径
【发布时间】:2019-01-01 12:19:31
【问题描述】:

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

有没有人知道我该如何实现它?任何输入都将不胜感激,我衷心感谢新手编码器。

【问题讨论】:

标签: java recursion binary-tree


【解决方案1】:

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

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
} 

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

【讨论】:

  • 非常感谢你,克里斯!非常感谢您花时间解释这一点。
  • @JimBouquet 很高兴我能帮上忙。祝你编码好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2019-12-06
  • 1970-01-01
相关资源
最近更新 更多