Binary Tree Level Order Traversal

来源:互联网 发布:淘宝考试规则 编辑:程序博客网 时间:2024/05/16 16:08
/** * 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) {//做完后弄清queue和priority queue的区别                List<List<Integer>> a=new LinkedList<List<Integer>>();//答案中用linkedlist(奇怪哈,用ArrayList和List都出错)        Queue<TreeNode> b=new LinkedList<TreeNode>();//答案中用linkedlist//Queue<Integer> b=new LinkedList<Integer>()这个写法错误        if(root==null) return a;//if(root==null) return null;写法错误        b.offer(root);        while(!b.isEmpty())//while要小写        {            int rowsize=b.size();//用.size()来获取当前行内元素的长度            List<Integer> c=new LinkedList<Integer>();//用它来存放Queue中的当前行内容            for(int i=1;i<=rowsize;i++)            {                 if(b.peek().left!=null)b.offer(b.peek().left);//queue中的添加用offer//b.peek().left.val!=null这个写法错                if(b.peek().right!=null)b.offer(b.peek().right);//用.peek()获取queue的首位元素                c.add(b.poll().val);//c.add(b.peek())写法错误            }            a.add(c);//将当前行的所有元素放入a        }        return a;    }}

<img src="http://img.blog.csdn.net/20150126084807286?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaml6aGlfZGVfd28=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />


0 0