Java实现二叉树的层序遍历

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
}

class Solution {
    private Queue<TreeNode>cur=new ArrayDeque<TreeNode>();
    private Queue<TreeNode>next=new ArrayDeque<TreeNode>();  //两个队列交互使用来达到一个层层递进的效果从而完成层序遍历
    private List<List<Integer>>src=new ArrayList<List<Integer>>();
    
    public List<List<Integer>> levelOrder(TreeNode root) {
    
        if(root!=null)
        {
            next.add(root);    
            List<Integer>list=new ArrayList<Integer>();
            list.add(root.val);
            src.add(list);
            while(!next.isEmpty())
            {
                for(TreeNode ss:next)
                    cur.add(ss);
                next.clear();
                List<Integer>tt=new ArrayList<Integer>();
                while(!cur.isEmpty())
                {
                    TreeNode dd=cur.poll();   //得到后并且删除掉
                    if(dd.left!=null)
                    {
                        tt.add(dd.left.val);
                        next.add(dd.left);
                    }
                    if(dd.right!=null)
                    {
                        tt.add(dd.right.val);
                        next.add(dd.right);
                    }
                }
                if(!tt.isEmpty())   //如果左子树与右子树都为空,则不加入进去
                src.add(tt);
            }
        }     
        return src;
        
    }
}
原文地址:https://www.cnblogs.com/z2529827226/p/11731747.html