【LintCode-69】二叉树的层次遍历(Java实现)

【LintCode-69】二叉树的层次遍历(Java实现)_第1张图片
如果您有更好的解法,欢迎您在留言区补充,感谢!!

    public List<List<Integer>> levelOrder(TreeNode root) {
        if(root==null){
            return new ArrayList();
        }
        List<List<Integer>> resultList=new ArrayList<>();
        TreeNode tempNode=null;
        int size=0;
        Queue<TreeNode> queue=new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
            List<Integer> list=new ArrayList<>();
            size=queue.size();
            for(int i=0;i<size;i++){
                tempNode=queue.poll();
                list.add(tempNode.val);                
                if(tempNode.left!=null){
                    queue.offer(tempNode.left);
                }
                if(tempNode.right!=null){
                    queue.offer(tempNode.right);
                }                    
            }
            resultList.add(list);        
        }
        return resultList;    
    }

挑战1:只使用一个队列去实现它
挑战2:用DFS算法来做 【未完成】

如果您有更好的解法,欢迎您在留言区补充,感谢!!

你可能感兴趣的:(数据结构)