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; } 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 { get; set; } // 以根结点为起点,插入结点 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(); } } }