数据结构和算法基础之二叉树的链式储存

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 树
{

    public class TreeNode<T>
    {
        public T Data;
        public TreeNode()
        {
            Data = default(T);
            
        }

        public TreeNode( T data)
        {
            Data = data;
        }
    }
    public  class BinaryTree<T> where T: IComparable<T>
    {
        public TreeNode<T> Root;//根节点
        public BinaryTree<T> LeftTree;//左子树
        public BinaryTree<T> RightTree;//右子树
        public BinaryTree(T data)
        {
            Root = new TreeNode<T>(data);
            LeftTree = null;
            RightTree = null;
        }
        public void Create(T data)
        {
            T tmpData = this.Root.Data;
            if(tmpData.CompareTo(data)>0)
            {
                if (this.LeftTree == null)
                {
                    this.LeftTree = new BinaryTree<T>(data);
                }
                else
                {
                    this.LeftTree.Create(data);
                }
            }else
            {
                if (this.RightTree == null)
                {
                    this.RightTree = new BinaryTree<T>(data);
                }
                else
                {
                    this.RightTree.Create(data);
                }
            }
          
        }

        /// <summary>
        /// 前序遍历
        /// </summary>
        public void FrontOver()
        {
            Console.WriteLine(Root.Data);
            if(this.LeftTree!=null)
            {
                this.LeftTree.FrontOver();
            }

            if (this.RightTree != null)
            {
                this.RightTree.FrontOver();
            }
        }

        /// <summary>
        /// 中序遍历
        /// </summary>
        public void MidOver()
        {
            if (this.LeftTree != null)
            {
                this.LeftTree.MidOver();
            }
            Console.WriteLine(Root.Data);
            

            if (this.RightTree != null)
            {
                this.RightTree.MidOver();
            }
        }
        /// <summary>
        /// 后序遍历
        /// </summary>
        public void BehindOver()
        {
            if (this.LeftTree != null)
            {
                this.LeftTree.BehindOver();
            }
            if (this.RightTree != null)
            {
                this.RightTree.BehindOver();
            }
            Console.WriteLine(Root.Data);
        }
     

    }
}

猜你喜欢

转载自www.cnblogs.com/weiqiangwaideshijie/p/10544584.html