Binary Tree Level Order Traversal 二叉树的同层遍历

来源:互联网 发布:免费淘宝开店教程视频 编辑:程序博客网 时间:2024/05/04 16:11

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]]

看例子,我们就知道level order指的意思了,就是一个同层的遍历。

更具体的来说,就是一个广度优先遍历。

用queue来存储要访问的节点。

并用一个变量len来标记哪些节点是属于同一层的。

当前一层遍历完了,当前queue的大小,就是下阶段的同一层的节点的个数。

运行时间:



代码:

public class BinaryTreeLevelOrderTraversal {    public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> result = new ArrayList<>();        if (root == null) {            return result;        }        Queue<TreeNode> store = new LinkedList<>();        store.add(root);        int len = store.size();        List<Integer> curList = new ArrayList<>();        while (!store.isEmpty()) {            TreeNode temp = store.poll();            curList.add(temp.val);            if (temp.left != null) {                store.add(temp.left);            }            if (temp.right != null) {                store.add(temp.right);            }            len--;            if (len == 0) {                len = store.size();                result.add(new ArrayList<>(curList));                curList = new ArrayList<>();            }        }        return result;    }}


1 0
原创粉丝点击