C#实现二叉树外带中序遍历(转载)

using System; namespace BinaryTree {      // Binary Tree的结点类      class Node     {          public  int Data {  getset; }          public Node LeftSubNode {  getset; }          public Node RightSubNode {  getset; }          // 结点为自己追加子结点(与向左/向右追加结点,形成递归)          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;             }              else             {                  this.LeftSubNode.Append(subNode);             }         }          // 向右追加          public  void AppendRight(Node subNode)         {              if ( this.RightSubNode ==  null)             {                  this.RightSubNode = subNode;             }              else             {                  this.RightSubNode.Append(subNode);             }         }          // 结点显示自己的数据          public  void ShowData()         {             Console.WriteLine( "Data={0}"this.Data);         }     }      // BinaryTree类      class Tree     {          // 根结点          public Node Root {  getset; }          // 以根结点为起点,插入结点          public  void Insert(Node newNode)         {              if ( this.Root ==  null)             {                  this.Root = newNode;             }              else             {                  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();         }     } }

转载于:https://www.cnblogs.com/guoxiaowen/archive/2008/08/07/1262571.html

猜你喜欢

转载自blog.csdn.net/weixin_34187822/article/details/93697771