C# 二叉树删除节点

来源:百度知道 编辑:UC知道 时间:2024/05/07 11:24:45
public class pedigreeTreeNode
{
public Person personInfo;
public pedigreeTreeNode child;
public pedigreeTreeNode brother;
public pedigreeTreeNode parent;
}

public class pedigreeBinTree
{
public pedigreeTreeNode root;
public pedigreeBinTree()
{//......
}

public void deleteNode(pedigreeTreeNode n)
{
if(n!=null)
{
deleteNode(n.child);
deleteNode(n.brother);
//How to release node n??
}
}

}

C#里面应该是没有像C++里面的delete操作的,我知道C#里面的所有内存释放都是由GC来管理,可是要实现这个二叉树删除节点,我要自己释放节点,应该怎么做???

垃圾回收是将没有用的(也就是没有任何引用指向它的时候)内存空间清空.所以应该把那段内存的引用设为"null"
然后GC.Collect(); //这样好像不是特别好
可以试下Dispose()方法。

您的删除节点,只要用父节点删就行了。
方法是,将父节点当作参数传入递归的遍历函数中。
否则删不掉,这是算法题,不是垃圾回收问题。

已知二叉树的先序序列与后序序列,问二叉树的结构
。拿程序生成,并输出。
这题怎么样?
话说您的书上有啊,不用问的。

具体的方法是:
if(n!=null)
{
deleteNode(n.child);
deleteNode(n.brother);
n.child=null;
n.brother=null;
//How to release node n??
}
我保证你再也遍历不到。
MSN:wangyingshi19850612@126.com

x.Dispose();

free可以不

n.Dispose();