CSharp Algorithm - How to traverse binary tree by breadth (Part II)

/*

Author: Jiangong SUN

*/


Here I will introduce the breadth first traversal of binary tree.


The principe is that you traverse the binary tree level by level. 


This traversal is quite different than depth first traversal. In depth first traversal you can use recursive method to traverse.


Here is one solution using a queue.


        /// <summary>
        /// breadth-first traversal 寬度遍歷樹
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="node"></param>
        public void Traversal<T>(Node<T> node)
        {
            //create a Node<T> queue
            var treeQueue = new Queue<Node<T>>();
            //initialize queue with tree root node
            treeQueue.Enqueue(node);

            //if queue has elements
            while (treeQueue.Count > 0)
            {
                //dequeue the queue's first node 
                Node<T> current = treeQueue.Dequeue();

                //print the node name
                PrintNodeName(current);
                
                //if node has Left leaf, enqueue it
                if (current.LNode != null)
                    treeQueue.Enqueue(current.LNode);
                
                //if node has right leaf, enqueue it
                if (current.RNode != null)
                    treeQueue.Enqueue(current.RNode);
            }
        }



references;

http://www.cs.bu.edu/teaching/c/tree/breadth-first/

http://hectorea.com/blog/programming-interview-31-binarytree-traversal-by-levels-breadth-first/#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章