我用 C# 编写了一个简单的程序来在二叉树中添加一个节点。我有一个对象字段“根”来保存主父节点。这样每次我添加一个节点时,我都会通过检索父节点中的数据来遍历树。
这是我的代码
public class BTNode
{
public int Value { get; set; }
public BTNode Left { get; set; }
public BTNode Right { get; set; }
public BTNode Root { get; set; }
}
public class BinaryTree
{
public BinaryTree()
{
size = 0;
Root = null; //To hold the main Parent Node
}
int size;
object Root;
public void AddNode(int value)
{
BTNode NewNode = new BTNode();
if (Root != null)
{
NewNode = (BTNode)Root; //If tree exists, Get the Root Node
}
while (NewNode.Root != null)
{
if (value < NewNode.Value)
{
NewNode.Root = NewNode.Left;
}
else if (value > NewNode.Value)
{
NewNode.Root = NewNode.Right;
}
}
size++;
NewNode.Value = value; //OBJECT 'ROOT' GETTING UPDATED AT THIS POINT
NewNode.Root = NewNode; //self pointer
NewNode.Left = null;
NewNode.Right = null;
if (size == 1)
{
Root = (object) NewNode; //if this is the Parent Node(First Node)
} //then update the Root to be the parent Node
}
}
我只想在“Root”中保留二叉树的父节点。我只想在 size =1 时执行最后一行,即如果它是树的第一个节点,但无论我做什么,Root 都会为每个节点更新节点。我很难知道为什么会这样,请帮助我。我错过了任何概念,这里的逻辑。