数据结构——二叉树层序遍历

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构——二叉树层序遍历相关的知识,希望对你有一定的参考价值。

  层序遍历,即宽度优先遍历,在本算法中,我们还需要将每一层进行分开打印,

    技术分享

对于上图所示的二叉树,我们希望打印出的结果是:

  1

  2 3

  4 5 6

  7 8

  首先,我们看一下二叉树节点是什么样的:

class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;
    }
}

  具体实现中,我们采用last表示当前打印的行的最后一个元素的引用,nlast表示下一行最后一个元素的引用。然后我们借助队列来进行展开工作:

 1 import java.util.ArrayList;
 2 import java.util.LinkedList;
 3 import java.util.List;
 4 
 5 public class Tree {
 6     
 7     public int[][] printTree(TreeNode root) {
 8         if (root == null) {
 9             return null;
10         }
11         TreeNode last = root;
12         TreeNode nlast = root;
13         List<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
14         ArrayList<Integer> list = new ArrayList<Integer>() ;
15         LinkedList<TreeNode> quene = new LinkedList<TreeNode>();
16         quene.offer(root);
17         TreeNode temp ;
18         while(!quene.isEmpty()){            
19             temp = quene.poll();
20             list.add(temp.val);
21             if (temp.left != null) {
22                 quene.offer(temp.left);
23                 nlast = temp.left;
24             }
25             if (temp.right != null) {
26                 quene.offer(temp.right);
27                 nlast = temp.right;
28             }
29             if(temp == last){
30                 last = nlast ;
31                 res.add(list) ;
32                 list = new ArrayList<Integer>() ;
33             }
34         }
35         
36         int [][] re = new int [res.size()][] ;
37         for(int i = 0 ; i < res.size() ; i++){
38             re[i] = new int [res.get(i).size()] ;
39             for(int j = 0; j < res.get(i).size(); j++){
40                 re[i][j] = res.get(i).get(j);
41             }            
42         }
43 
44         return re ;        
45 
46     }
47 }

 

以上是关于数据结构——二叉树层序遍历的主要内容,如果未能解决你的问题,请参考以下文章

二叉树层序遍历

二叉树层序遍历

二叉树层序遍历

建立二叉树,层序、先序遍历

Leetcode-102.二叉树层序遍历

建立二叉树,层序、先序遍历