二叉樹的層序遍歷算法實現


一,問題描述

實現二叉樹的層序遍歷--從根開始,依次向下,對於每一層從左向右遍歷。

 

二,算法分析

層序遍歷與先序、中序、后序遍歷不同。層序遍歷用到了隊列,而先、中、后序需要用到棧。

因此,先、中、后序遍歷 可以 采用遞歸方式來實現,而層序遍歷則沒有遞歸方式。

算法步驟:

初始時,根結點入隊列

然后,while循環判斷隊列不空時,彈出一個結點,訪問它,並把它的所有孩子結點入隊列。

 

三,代碼實現

 1     public void levelTraverse(BinarySearchTree<T> tree){
 2         levelTraverse(tree.root);
 3     }
 4     private void levelTraverse(BinaryNode<T> root){
 5         if(root == null)
 6             return;
 7         
 8         Queue<BinaryNode<T>> queue = new LinkedList<>();//層序遍歷時保存結點的隊列
 9         queue.offer(root);//初始化
10         while(!queue.isEmpty()){
11             BinaryNode<T> node = queue.poll();
12             System.out.print(node.element + " ");//訪問節點
13             if(node.left != null)
14                 queue.offer(node.left);
15             if(node.right != null)
16                 queue.offer(node.right);
17         }
18     }

二叉搜索樹的完整實現代碼參考:

二叉查找樹的遞歸實現及遞歸分析中的完整代碼實現部分

或者參考:

二叉樹的操作之統計二叉樹中節點的個數中的完整代碼實現部分

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM