C# BTree PreOrder InOrder PostOrder

namespace ConsoleApp49
{
    internal class Program
    {
        static void Main(string[] args)
        {
            BTreeDemo();
            Console.WriteLine("BTree!");
        }

        static void BTreeDemo()
        {
            BTree<int> tree = new BTree<int>(1);
            tree.Root.Left = new BTreeNode<int>(2);
            tree.Root.Right= new BTreeNode<int>(3);
            tree.Root.Left.Left = new BTreeNode<int>(4);
            tree.Root.Left.Right = new BTreeNode<int>(5);

            Console.WriteLine("PreOrder:");
            tree.PreOrderTraversal(tree.Root);

            Console.WriteLine("InOrder:");
            tree.InOrderTraversal(tree.Root);

            Console.WriteLine("PostOrder:");
            tree.PostOrderTraversal(tree.Root);
        }
    }

    public class BTreeNode<T>
    {
        public T Value { get; set; }
        public BTreeNode<T> Left { get; set; }

        public BTreeNode<T> Right { get; set; }

        public BTreeNode(T value)
        {
            Value = value;
            Left = null;
            Right = null;
        }
    }

    public class BTree<T>
    {
        public BTreeNode<T> Root { get; set; }

        public BTree(T rootValue)
        {
            Root=new BTreeNode<T>(rootValue);
        }

        public void PreOrderTraversal(BTreeNode<T> node)
        {
            if(node!=null)
            {
                Console.WriteLine(node.Value);
                PreOrderTraversal(node.Left);
                PreOrderTraversal(node.Right);
            }
        }

        public void InOrderTraversal(BTreeNode<T> node)
        {
            if(node!=null)
            {
                InOrderTraversal(node.Left);
                Console.WriteLine(node.Value);
                InOrderTraversal(node.Right);
            }
        }

        public void PostOrderTraversal(BTreeNode<T> node)
        {
            if(node!=null)
            {
                PostOrderTraversal(node.Left);
                PostOrderTraversal(node.Right);
                Console.WriteLine(node.Value);
            }
        }
    }
}

 

 

 

 

posted @ 2024-08-20 20:22  FredGrit  阅读(10)  评论(0)    收藏  举报