私は非常に奇妙な問題があります。基本的には、ツリー内のノードを表すTreeNodeというクラスを作成しました。次に、すべてのノードをリストに追加してツリーを作成します。すべての参照が葉までのルートから完全に取り組んで - 私はちょうど木の作成後にブレークポイントを入れて、Visual Studioで、リストの上にマウスを置く場合リストから削除するとオブジェクトの参照が失われる
class TreeNode
{
private TreeNode parent, lChild, rChild;
private int key, val;
public int Key
{
get { return key; }
set { key = value; }
}
public int Val
{
get { return val; }
set { val = value; }
}
public TreeNode Parent
{
get { return parent; }
set { parent = value; }
}
public TreeNode LChild
{
get { return lChild; }
}
public TreeNode RChild
{
get { return rChild; }
}
public TreeNode(int k, int v)
{
key = k;
val = v;
}
public void SetChild(TreeNode leftChild, TreeNode rightChild)
{
this.lChild = leftChild;
this.rChild = rightChild;
}
public bool isLeaf()
{
if (this.lChild == null && this.rChild == null)
{
return true;
} else
{
return false;
}
}
public bool isParent()
{
if (this.parent == null)
{
return true;
}
else
{
return false;
}
}
public void SetParent(TreeNode Parent)
{
this.parent = Parent;
}
}
だから私は、ツリーの構造を見ることができます。
しかし私は、次の手順を実行している場合:
TreeNode test = newTree[newTree.Count - 1];
は注意してください:
ルートノードを返しますprivate List<TreeNode> newTree = new List<TreeNode>();
- 私は1つの下のレベルに行うことができますし、再び上にマウスを移動(すなわち左の子または右子ども)しかし、これらの子どもたちはその後、子どものための参照を持っていません。
テストノードがリストの一部ではないので、私はリスト内の他のノードにメモリ内の参照を失っているのだろうか?
ご協力いただければ幸いです。
おかげ トムあなたはあなたが持っていない
。 –
こんにちは、私は明確ではないことをお詫びします... 'newtree'はTreeNodeのリストです - 私が知っているばかげた命名規則です。ので、コードは正解です、ありがとう – TomP89