天天看点

杂七杂八——C#实现二叉树,外带中序遍历

发现用C#语法实现数据结构的时候,代码显得干净利落,嘻嘻。

using System;

namespace BinaryTree

{

    // Binary Tree的结点类

    class Node

    {

        public int Data { get; set; }

        public Node LeftSubNode { get; set; }

        public Node RightSubNode { get; set; }

        // 结点为自己追加子结点(与向左/向右追加结合,形成递归)

        public void Append(Node subNode)

        {

            if (subNode.Data <= this.Data)

            {

                this.AppendLeft(subNode);

            }

            else

                this.AppendRight(subNode);

        }

        // 向左追加

        public void AppendLeft(Node subNode)

            if (this.LeftSubNode == null)

                this.LeftSubNode = subNode;

                this.LeftSubNode.Append(subNode);

        // 向右追加

        public void AppendRight(Node subNode)

            if (this.RightSubNode == null)

                this.RightSubNode = subNode;

                this.RightSubNode.Append(subNode);

        // 结点显示自己的数据

        public void ShowData()

            Console.WriteLine("Data={0}", this.Data);

    }

    // Binary Tree类

    class Tree

        // 根结点

        public Node Root { get; set; }

        // 以某结点为起点,插入结点

        public void Insert(Node newNode)

            if (this.Root == null)

                this.Root = newNode;

                this.Root.Append(newNode);

        // 重载,默认以根结点为起点插入

        public void MidTravel()

            this.MidTravel(this.Root);

        // 中序遍历(递归)

        public void MidTravel(Node node)

            if (node.LeftSubNode != null)

                this.MidTravel(node.LeftSubNode);

            node.ShowData();

            if (node.RightSubNode != null)

                this.MidTravel(node.RightSubNode);

    class Program

        static void Main(string[] args)

            Tree tree = new Tree();

            tree.Insert(new Node { Data = 3 });

            tree.Insert(new Node { Data = 6 });

            tree.Insert(new Node { Data = 2 });

            tree.Insert(new Node { Data = 7 });

            tree.Insert(new Node { Data = 18 });

            tree.MidTravel();

}

// 水之真谛

// [url]http://blog.csdn.net/FantasiaX[/url]

本文转自 水之真谛 51CTO博客,原文链接:http://blog.51cto.com/liutiemeng/95289,如需转载请自行联系原作者