//层次遍历 //引入队列 public void LevelOrder(TreeNode <T> root) { Console.WriteLine("遍历开始:"); if (root == null) { Console.WriteLine("没有结点!"); return; } TreeNode <T> temp = root; CSequeue <TreeNode <T> > queue = new CSequeue <TreeNode <T> >(50); queue.Enqueue(temp); while (!queue.IsEmpty()) { temp = (TreeNode <T>)queue.Dequeue(); Console.WriteLine(temp.Data + " "); for (int i = 0; i < temp.Childs.Count; i++) { if (temp.Childs[i] != null) { queue.Enqueue(temp.Childs[i]); } } } Console.WriteLine("遍历结束!"); }
public void Clear() {//待测试; TreeNode <T> temp = root; CSequeue <TreeNode <T> > queue = new CSequeue <TreeNode <T> >(); queue.Enqueue(temp); while (!queue.IsEmpty()) { temp = (TreeNode <T>)queue.Dequeue(); for (int i = 0; i < temp.Childs.Count; i++) { queue.Enqueue(temp.Childs[i]); temp.Childs.Clear(); } } root = null; }