Java 二叉搜索树递归返回到根
我需要用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)操作(在平衡树的情况下)——您只需遍历父节
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"
你的问题是什么?请不要要求我们为你做作业。只需从根计数步数中找到此节点的路径。太好了,当你真的有问题时,现在回到这里!!