【发布时间】:2018-05-03 03:36:45
【问题描述】:
下面是我的代码。在向左或右节点插入值后,我试图返回头节点。我理解插入的概念,但我无法理解如何将我的头节点恢复到现在它恢复到添加节点的原始状态。 这正是我不明白的。
- 当我插入我的节点时,我怎样才能打破循环并返回它的头节点。
- 递归是堆栈概念,它将基于 LIFO 输出,如果是 LIFO,我如何才能返回头节点
这是我的代码:
class Node {
int data;
Node left;
Node right;
}
static Node Insert(Node root,int value)
{
return nodeHelper(root,value);
}
static Node nodeHelper(Node root,int value){
Node nodeTracker = root;
Node temp;
if(root!=null){
if(value>root.data){
if(root.right==null){
temp =new Node();
temp.data = value;
root.right = temp;
return nodeTracker;
}
else{
nodeHelper(root.right,value);
}
}
else{
if(root.left==null){
temp=new Node();
temp.data = value;
root.left = temp;
return nodeTracker;
}
else{
nodeHelper(root.left,value);
}
}
}
else{
temp=new Node();
temp.data = value;
return temp;
}
}
}
【问题讨论】:
-
nodeHelper 将在正确的位置插入新节点。您在 Insert 方法中有可用的根目录。为什么不能只从 Insert 方法返回根。
static Node Insert(Node root,int value) { nodeHelper(root,value); return root; }
标签: recursion data-structures binary-search-tree nodes