算法系列——Binary Tree Level Order Traversal

来源:互联网 发布:手机群发短信软件免费 编辑:程序博客网 时间:2024/06/05 10:24

题目描述

Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]

解题思路

二叉树层次遍历 需要用到队列。先将根节点入队,然后遍历队列,
再分别将队列中的结点的左右子节点入队。依次取队头元素即可。

程序实现

  public List<List<Integer>> levelOrder(TreeNode root) {         Queue<TreeNode> queue = new LinkedList<TreeNode>();        List<List<Integer>> wrapList = new LinkedList<List<Integer>>();        if(root == null) return wrapList;        queue.offer(root);        while(!queue.isEmpty()){            int levelNum = queue.size();            List<Integer> subList = new LinkedList<Integer>();            for(int i=0; i<levelNum; i++) {                if(queue.peek().left != null) queue.offer(queue.peek().left);                if(queue.peek().right != null) queue.offer(queue.peek().right);                subList.add(queue.poll().val);            }            wrapList.add(subList);        }        return wrapList;    }