Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二叉搜索树递归返回到根_Java_Recursion_Binary Search Tree - Fatal编程技术网

Java 二叉搜索树递归返回到根

Java 二叉搜索树递归返回到根,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,我需要用java创建一个方法,递归地确定从任何给定节点到根节点的距离。该方法返回一个整数,显示特定节点距离根节点的距离。下面给出了节点类 Public class Node { int data; node left; node right; } 不允许使用全局变量或属性,并且我无法修改节点类。我已经查找了它,每个解决方案都告诉我修改节点类以包含父节点的节点指针。任何帮助都将不胜感激,谢谢 如果每个节点中都存储了parent,则搜索将需要O(logn)操作(在平衡树的情况下)——您只需遍历父节

我需要用java创建一个方法,递归地确定从任何给定节点到根节点的距离。该方法返回一个整数,显示特定节点距离根节点的距离。下面给出了节点类

Public class Node
{
int data;
node left;
node right;
}

不允许使用全局变量或属性,并且我无法修改节点类。我已经查找了它,每个解决方案都告诉我修改节点类以包含父节点的节点指针。任何帮助都将不胜感激,谢谢

如果每个节点中都存储了
parent
,则搜索将需要O(logn)操作(在平衡树的情况下)——您只需遍历父节点并计算步骤,直到
parent==null
,这意味着根节点

但是如果没有
parent
字段,则需要从根开始递归遍历整个树,查找给定的节点。它需要O(N)操作:

/** Returns the distance between "n" and "current" plus "step" 
/*  or -1 if "n" not found                                     */
int distance(Node n, Node current, int step) {
    int res = -1;
    if (n == current)  // node found
       return step;                     
    if (current.left == null && current.right == null)  // leaf node
       return -1;
    if (current.left != null)   // search in left subtree
       res = distance(n, current.left, step + 1);
    if (res > 0) 
       return res;
    if (current.right != null)  // search in right subtree
       res = distance(n, current.right, step + 1);
    return res;
}

//....
Node root;
Node given;
int dist = distance(given, root, 0);  // distance between "root" and "given"

你的问题是什么?请不要要求我们为你做作业。只需从根计数步数中找到此节点的路径。太好了,当你真的有问题时,现在回到这里!!