数据结构系列:树(链表)[C#]

本文记录了作者在学习C++树数据结构后,使用C#实现链表树的过程。通过亲手操作,作者深感C#的易用性,并强调了Node类在链式存储中的重要性,以及熟练调用类方法的安全性。文章介绍了Node类的设计,包括左右子树的属性,以及Tree类的接口和方法实现。最终展示了前序遍历的结果,与C++实现完全一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看了一上午的c++的树,无论是数组的做法还是链表的做法。
看完之后,却发现自己的c++的链表完成的不算很成功。
为了巩固知识,自己亲手做了一个c#的树,还是很有成就感的。

///本次总结

  1. 要加深对结点Node类的使用,在链式存储中很有用
  2. 熟练的调用各个类中的方法,如何安全的调用其他类的属性
  3. “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
                {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值