樹的層次遍歷(Java程式碼實現)
阿新 • • 發佈:2018-12-24
與樹的前中後序遍歷的DFS思想不同,層次遍歷用到的是BFS思想。一般DFS用遞迴去實現(也可以用棧實現),BFS需要用佇列去實現。
層次遍歷的步驟是:
1.對於不為空的結點,先把該結點加入到佇列中
2.從隊中拿出結點,如果該結點的左右結點不為空,就分別把左右結點加入到佇列中
3.重複以上操作直到佇列為空
1 public class Solution{
2 class TreeNode {
3 int val;
4 TreeNode left;
5 TreeNode right;
6 TreeNode(int x) { val = x; }
7 }
8 public static void LaywerTraversal(TreeNode root){
9 if(root==null) return;
10 LinkedList<TreeNode> list = new LinkedList<TreeNode>();
11 list.add(root);
12 TreeNode currentNode;
13 while(!list.isEmpty()){
14 currentNode=list.poll();
15 System.out.println(currentNode.val);
16 if(currentNode.left!=null){
17 list.add(currentNode.left);
18 }
19 if(currentNode.right!=null){
20 list.add(currentNode.right);
21 }
22 }
23 }
24 }