Mega Code Archive

 
Categories / C# / Generics
 

Generic Binary Tree

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<char> charTree = new Tree<char>('M');         InsertIntoTree<char>(charTree, 'X', 'A', 'M', 'Z', 'Z', 'N');         charTree.WalkTree();     }     static void InsertIntoTree<T>(Tree<T> tree, params T[] data) where T : IComparable<T> {         if (data.Length == 0)             throw new ArgumentException("Must provide at least one data value");         foreach (T datum in data) {             tree.Insert(datum);         }     } }