using System; using System.Collections.Generic; using System.Linq; using System.Text; using System; using System.Collections.Generic; using System.Linq; using System.Text; public class Tree<TItem> where TItem : IComparable<TItem> { public Tree(TItem nodeValue) { this.NodeData = nodeValue; this.LeftTree = null; this.RightTree = null; } public void Insert(TItem newItem) { TItem currentNodeValue = this.NodeData; if (currentNodeValue.CompareTo(newItem) > 0) { if (this.LeftTree == null) { this.LeftTree = new Tree<TItem>(newItem); } else { this.LeftTree.Insert(newItem); } } else { if (this.RightTree == null) { this.RightTree = new Tree<TItem>(newItem); } else { this.RightTree.Insert(newItem); } } } public void WalkTree() { if (this.LeftTree != null) { this.LeftTree.WalkTree(); } Console.WriteLine(this.NodeData.ToString()); if (this.RightTree != null) { this.RightTree.WalkTree(); } } public TItem NodeData { get; set; } public Tree<TItem> LeftTree { get; set; } public Tree<TItem> RightTree { get; set; } } class Program { static void Main(string[] args) { Tree<int> tree1 = new Tree<int>(10); tree1.Insert(5); tree1.Insert(1); tree1.Insert(15); tree1.Insert(-2); tree1.Insert(115); tree1.Insert(10); tree1.Insert(114); tree1.Insert(-18); tree1.Insert(1110); tree1.Insert(81); tree1.Insert(18); tree1.WalkTree(); Tree<string> tree2 = new Tree<string>("Hello"); tree2.Insert("A"); tree2.Insert("B"); tree2.Insert("C"); tree2.Insert("D"); tree2.Insert("E"); tree2.Insert("F"); tree2.Insert("G"); tree2.Insert("H"); tree2.Insert("I"); tree2.Insert("J"); tree2.Insert("K"); tree2.WalkTree(); } }