• C#泛型


    一构造二叉树 读取二叉树的值

    新建工程类库:命名BinaryTree

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace BinaryTree
    {
        //where表示TItem类型实现接口IComparable
        public class Tree<TItem> where TItem:IComparable<TItem>
        {
           //属性
            public TItem DataNode { get; set; }
            public Tree<TItem> LeftNode { get; set; }
            public Tree<TItem> RightNode { get; set; }
            //构造函数
            public Tree(TItem nodevalue)
            {   
                this.DataNode = nodevalue;//作为树根节点的值
                this.LeftNode = null;
                this.RightNode = null;
            }
            //向树中插入节点
            public void Insert(TItem newitem)
            {
                //把独立树的节点值赋值给当前节点
                TItem currentNodeValue = this.DataNode;
                //currentNodeValue与newitem比较 大于0插入左边树,小于0插入右边树
                if (currentNodeValue.CompareTo(newitem) > 0)
                {
                    //左节点是否为空
                    if (this.LeftNode == null)
                    {
                        //创建左节点
                        this.LeftNode = new Tree<TItem>(newitem);
                    }
                    else
                    {   //把当前左节点看作为独立树的根节点继续递归向下查找,直到没有左节点然后插入
                        this.LeftNode.Insert(newitem);
                    }
                }
                else 
                { 
                      //右节点是否为空
                    if (this.RightNode == null)
                    {
                        //创建右节点
                        this.RightNode = new Tree<TItem>(newitem);
                    }
                    else
                    { 
                        //把当前右节点看作独立树的根节点继续递归向下查找,直到没有右节点然后插入
                        this.RightNode.Insert(newitem);
                    }
                }
    
            }
            //读取树中的数据
            public void WalkTree()
            { 
                //是否存在左节点
                if (this.LeftNode != null)
                {
                    //递归继续读取
                    this.LeftNode.WalkTree();
                }
                Console.WriteLine(this.DataNode.ToString());
                //是否存在右节点
                if (this.RightNode != null)
                {   //递归继续读取
                    this.RightNode.WalkTree();
                }
            }
        }
    }

    在Main函数中测试:

     class Program
        {
            static void Main(string[] args)
            {
                //实例化
            Tree<char> tree = new Tree<char>('g');
                tree.Insert('a');
                tree.Insert('m');
                tree.Insert('b');
                tree.Insert('v');
                tree.WalkTree();
                Console.Read();
            }   
       }

    效果图:

    输出的数据已排好序

  • 相关阅读:
    团队博客——1
    团队博客3
    团队博客6
    团队博客2
    团队博客8
    团队博客4
    团队博客7
    安装“消息队列 (MSMQ)”
    服务端上传文件到共享目录
    数据库变成可疑状态
  • 原文地址:https://www.cnblogs.com/zcttxs/p/2563447.html
Copyright © 2020-2023  润新知