自己写着试了一下。。。。 CS的 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LinkListTest { class BTNode { private object data; private BTNode prev; private BTNode post; public object DaTa { get { return data; } set {this.data = value;} } public BTNode Prev { get { return prev; } set { this.prev = value; } } public BTNode Post { get { return post; } set { this.post = value; } } public BTNode(BTNode prev, object data, BTNode post) { this.data = data; this.prev = prev; this.post = post; } public BTNode():this(null,null,null){} } class BTree { private BTNode root; public BTNode Root { get { return root; } set { this.root = value; } } /// <summary> /// Set BTree from midorder and postorder /// </summary> /// <param name="bt"></param> /// <param name="mid"></param> /// <param name="post"></param> public void PostBTree( BTNode bt, string mid, string post) { bt.DaTa = post[post.Length - 1]; int pos = 0; while (mid[pos] != post[post.Length-1]) pos++; char[] chpremid = new char[pos]; char[] chprepost = new char[pos]; for (int i = 0; i < pos; i++) { chpremid[i] = mid[i]; chprepost[i] = post[i]; } char[] chpostmid = new char[mid.Length - pos]; char[] chpostpost = new char[mid.Length - pos]; for (int i = 0, j = pos; i < mid.Length - pos -1;i++,j++) { chpostmid[i] = mid[j + 1]; chpostpost[i] = post[j]; } string newpremid = new string(chpremid); string newprepost = new string(chprepost); string newpostmid = new string(chpostmid); string newpostpost = new string(chpostpost); if (pos != 0) { bt.Prev = new BTNode(); PostBTree(bt.Prev, newpremid, newprepost); } if(pos != mid.Length-1) { bt.Post = new BTNode(); PostBTree(bt.Post, newpostmid, newpostpost); } } public void Preorder(BTNode p) { if (p != null) { Console.Write(p.DaTa); Preorder(p.Prev); Preorder(p.Post); } } public void Postorder(BTNode p) { if (p != null) { Postorder(p.Prev); Postorder(p.Post); Console.Write(p.DaTa); } } public void Midorder(BTNode p) { if (p != null) { Midorder(p.Prev); Console.Write(p.DaTa); Midorder(p.Post); } } } } 由前序中序,得到后序也差不多吧。。。有时间实现下。。