Binary Tree Level Order Traversal 解题报告

来源:互联网 发布:网络人士周小平 编辑:程序博客网 时间:2024/06/05 16:04

Binary Tree Level Order Traversal

Description

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

Example

Given binary tree {3,9,20,#,#,15,7},    3   / \  9  20    /  \   15   7return its level order traversal as:[  [3],  [9,20],  [15,7]]

实现思路

通过一个队列维护每一层的节点,在某一层中,一次从队列中取出节点,再将其叶子节点放进下一层队列中,遍历完当前层,再遍历下一层,直到下一层的队列全为空,则结束层次遍历

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {    /**     * @param root: The root of binary tree.     * @return: Level order a list of lists of integer     */    public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {        ArrayList<ArrayList<Integer>> ret = new ArrayList<>();        if(root == null){            return ret;        }        LinkedList<TreeNode> list = new LinkedList<>();        list.add(root);        while(!list.isEmpty()){            ArrayList<Integer> oneRet = new ArrayList<>();            List<TreeNode> tempNodes = new ArrayList(list.subList(0, list.size()));            list.clear();            for(TreeNode node : tempNodes){                oneRet.add(node.val);                if(node.left != null){                    list.add(node.left);                }                if(node.right != null){                    list.add(node.right);                }            }            ret.add(oneRet);        }        return ret;    }}
0 0