考虑我有对象 A,它持有对 B 对象类型的引用,但这次初始化为 null。
A->B( == null)
我想将 null 替换为 B 类型的对象,该对象持有对 C 类型的引用
(B->C)
。
所以我会得到A->B->C
。
为什么不能通过提供 B 对象的引用来链接它们(它持有 null 但可能链接到幕后的特定内存地址并分配给它 C 对象而不是 null 所以之后它将是 A->B- >C?
为什么我必须转发 A 对象才能进行此操作?
这个问题是为了试图理解以下代码中的原因:插入新节点作为特定节点的子节点不起作用。 代码是:
public void InsertNodeToTreeLDR(TreeNode newNode)
{
var currRoot = Root;
InsertNodeToTreeHelper(ref currRoot, newNode);
}
private void InsertNodeToTreeHelper(ref TreeNode currTreeRoot, TreeNode newNode)
{
if (currTreeRoot == null)
{
currTreeRoot = newNode;
return;
}
else if (newNode.Data.CompareTo(currTreeRoot.Data) >= 0)
{
var currRootLeftChild = currTreeRoot.Leftchild;
InsertNodeToTreeHelper(ref currRootLeftChild, newNode);
}
else
{
var currRootRightChild = currTreeRoot.RightChild;
InsertNodeToTreeHelper(ref currRootRightChild, newNode);
}
}
注意:
我不想在这里包含所有代码,所以这个函数是 Tree 类的一部分,它包含 TreeNode 类型的根。
认为您已经拥有带有数据 == 2 (int) 的根树,并且想要像数据 == 1 一样添加新的左子节点。
在我的实现中,节点与其子节点之间的链接不起作用。