[leetcode] Level Order Traversal

来源:互联网 发布:传智播客2017java 编辑:程序博客网 时间:2024/06/08 17:50

Level Order Traversal, 代表性的bfs


几个维护的量:

1. queue<TreeNode> curLevel

2. queue<TreeNode> nextLevel

3. List<Integer> item 当前level的东西


/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } * 9:58 */public class Solution {    public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res = new ArrayList<List<Integer>>();        if (root==null) return res;        Queue<TreeNode> curLvl = new LinkedList<TreeNode>();        Queue<TreeNode> nextLvl = new LinkedList<TreeNode>();        List<Integer> item = new ArrayList<Integer>();        curLvl.add(root);        while (!curLvl.isEmpty()) {            while (!curLvl.isEmpty()) {                TreeNode node = curLvl.remove();                item.add(node.val);                if (node.left!=null) nextLvl.add(node.left);                if (node.right!=null) nextLvl.add(node.right);            }            curLvl = nextLvl;            nextLvl = new LinkedList<TreeNode>();            res.add(item);            item = new ArrayList<Integer>();        }        return res;    }}


0 0
原创粉丝点击