求二叉树的层序遍历

此题即采用队列进行遍历即可。 前序一个栈,添加时,先右后左。 中序也是一个栈,一直添加,先左后右。 后序可以用两个栈(较简单),也可用一个栈

 public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
        // write code here
        if(root==null) return new ArrayList<ArrayList<Integer>>();
        ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>();
        Deque<TreeNode> queue=new LinkedList<TreeNode>();
        queue.add(root);
        while (!queue.isEmpty()){
            ArrayList<Integer> list=new ArrayList<Integer>();
            int l=queue.size();
            for(int i=0;i<l;i++){
                TreeNode node=queue.poll();
                list.add(node.val);
                if(node.left!=null) queue.add(node.left);
                if(node.right!=null) queue.add(node.right);
            }
            lists.add(new ArrayList<>(list));
        }
        return lists;
    }
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务