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 @   FredGrit  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示