Binary Tree Level Order Traversal ---- LeetCode

来源:互联网 发布:网络语皮是什么意思 编辑:程序博客网 时间:2024/05/16 02:05

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,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its level order traversal as:

[  [3],  [9,20],  [15,7]]

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.


解题思路: 使用两个队列来完成层次遍历,其中一个对列存放当前遍历的层次节点,另一存放下一层节点即当前遍历的节点的孩子节点,当前对列为空则调换两个队列继续遍历。


/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
         List<List<Integer>> rs=new ArrayList<List<Integer>>();
             Queue<TreeNode> queue1=new LinkedList<TreeNode>();
             Queue<TreeNode> queue2=new LinkedList<TreeNode>();
        if(root==null){
        return rs;
        }
             queue1.add(root);
             
             while(!queue1.isEmpty()){
            List<Integer> list=new ArrayList<Integer>();
            while(!queue1.isEmpty()){
                TreeNode node=queue1.poll();
                if(node.left!=null){
                queue2.offer(node.left);
                }
                if(node.right!=null){
                queue2.offer(node.right);
                }
                list.add(node.val);
            }
                 rs.add(list);
                 queue1.addAll(queue2);
                 queue2.clear();            
             }
                                                 
             return rs;
    }
}



0 0
原创粉丝点击