今天看了一上午的c++的树,无论是数组的做法还是链表的做法。
看完之后,却发现自己的c++的链表完成的不算很成功。
为了巩固知识,自己亲手做了一个c#的树,还是很有成就感的。
///本次总结
- 要加深对结点Node类的使用,在链式存储中很有用
- 熟练的调用各个类中的方法,如何安全的调用其他类的属性
- “C#真好用”
首先是今天的核心,Node类,他不仅承接了数据跟连接的作用。
其次是,他本身由于有 左右子树,父子树 的属性。
所以在这个node中本身调用这些方法,既安全又可靠。
class Node<T>
{
private T curData;
private Node<T> leftNode;
private Node<T> rightNode;
private Node<T> parentNode;
private int index;//序号
public Node()
{
curData = default(T);
index = 0;
leftNode = null;
rightNode = null;
parentNode = null;
}
public Node(int index,T data)
//有这个构造方法 用的时候方便的多了
{
curData = data;
this.index = index;
leftNode = null;
rightNode = null;
parentNode = null;
}
public Node<T> changeRightNode(Node<T> node)
{
rightNode = node;
return this;
}
public Node<T> changeleftNode(Node<T> node)
{
leftNode = node;
return this;
}
public Node<T> SearchNode(int nodeIndex)
{
//在这个节点里面实现方法,因为左右节点本来就是他的私有属性
if (index == nodeIndex)
{
return this;//返回当前的这个结点
}
Node<T> temp = null;
if (leftNode != null)
{
if (leftNode.index == nodeIndex)
{
return leftNode;
}
else
{