using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1二叉树 { class Program { static void Main(string[] args) { string s1 = "hi"; string s2 = "how are you"; string s3 = "fine thank you and you"; string s4 = "yes im fine too"; string s5 = "oh let we see to next time, bye."; BinaryTree<string> bt = new BinaryTree<string>(); var r = new Random(); bt.Add(r.Next(1,10),s1); bt.Add(r.Next(1,10),s2); bt.Add(r.Next(1,10),s3); bt.Add(r.Next(1,10),s4); bt.Add(r.Next(1,10),s5); foreach (var item in bt.Items) { Console.WriteLine(item); } Console.Read(); } } public class BinaryTree<T> { class Node { public Node left,right; public int growngine; public T data; public Node(int growngine,T data) { this.growngine = growngine; this.data = data; } // public void LeftAdd(Node n) { if (this.left == null) { this.left = n; return; } if (this.left - n >= 0) { this.left.LeftAdd(n); } else { this.left.RightAdd(n); } } public void RightAdd(Node n) { if (this.right == null) { this.right = n; return; } if (this.right - n >= 0) { this.right.LeftAdd(n); } else { this.right.RightAdd(n); } } public static int operator -(Node n1,Node n2) { int b = default(int); b = n1.growngine - n2.growngine; return b; } } Node root,current; public int Count { get; private set; } public BinaryTree() { this.root = new BinaryTree<T>.Node(0,default(T)); this.Count = 0; } public void Add(int growngine,T data) { Node n = new BinaryTree<T>.Node(growngine,data); if (this.root - n >= 0) { this.root.LeftAdd(n); } else { this.root.RightAdd(n); } } // IEnumerable<T> getdata(Node n) { yield return n.data; if (n.left != null) foreach (var item in getdata(n.left)) yield return item; if (n.right != null) foreach (var item in getdata(n.right)) yield return item; } public IEnumerable<T> Items { get { foreach (T item in this.getdata(this.root)) { yield return item; } } } // } } //C# 的二叉 这是先序遍历,输出 hi how are you fine thank you and you yes i m fine too oh see you next time,bye.