LeetCode 50 Binary Tree Level Order Traversal

来源:互联网 发布:淘宝怎么查看消费总额 编辑:程序博客网 时间:2024/06/04 19:25

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]]
分析;

层序遍历,用队列,实质上是广度优先遍历。

/** * 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>> result = new ArrayList<List<Integer>>();        if(root == null) return result;        Queue<TreeNode> q1 = new LinkedList<TreeNode>();        Queue<TreeNode> q2 = new LinkedList<TreeNode>();        q1.add(root);        while(q1.size()>0 || q2.size()>0 ){            List<Integer> level = new ArrayList<Integer>();            if(q1.size()>0){                while(q1.size()>0){                    TreeNode temp = q1.remove();                    level.add(temp.val);                    if(temp.left != null) q2.add(temp.left);                    if(temp.right != null) q2.add(temp.right);                }                result.add(level);                continue;            }            if(q2.size()>0){                while(q2.size()>0){                    TreeNode temp = q2.remove();                    level.add(temp.val);                    if(temp.left != null) q1.add(temp.left);                    if(temp.right != null) q1.add(temp.right);                }                result.add(level);            }        }        return result;    }}


0 0
原创粉丝点击