以下是我的代码。在向左或右节点插入值后,我正在尝试返回头节点。我理解插入的概念,但是我无法理解如何将我的头节点返回到现在它已经恢复到添加了添加节点的原始状态。 这是我不明白的。
这是我的代码:
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;
}
}
}
答案 0 :(得分:0)
要返回树的根,您需要传递第三个参数来跟踪根。像这样:
Node* nodeHelper(Node* nodeTracker, Node* parent, int value)
删除本地nodeTracker
变量。
您的递归调用变为:
return nodeHelper(nodeTracker, parent.left, value);
(当然,right
分支也是如此)
您在insert
函数中的初始调用是:
return nodeHelper(root, root, value);