力扣 面试题32 - I. 从上到下打印二叉树
public int[] levelOrder(TreeNode root) { if(root==null) return new int[0]; Queuequeue=new linkedList<>(); queue.add(root); ArrayList temp=new ArrayList<>(); while(!queue.isEmpty()){ TreeNode node=queue.poll(); temp.add(node); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } int[] res=new int[temp.size()]; for(int i=0;i 面试题32 - II. 从上到下打印二叉树 II public List> levelOrder(TreeNode root){ if(root==null) return new linkedList<>(); List
> res=new linkedList<>(); Queue
queue=new linkedList<>(); List temp; queue.add(root); while(!queue.isEmpty()){ temp=new linkedList<>(); for(int i=queue.size();i>0;i--){//这里注意如果是I=0开始遍历,后面queue有变化的话就会导致循环的次数出错 TreeNode node=queue.poll(); temp.add(node.val); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } res.add(temp); } return res; } 面试题32 - III. 从上到下打印二叉树 III
方法一:层序遍历 + 双端队列(奇偶层逻辑分离)
public List> levelOrder(TreeNode root) { if(root==null) return new linkedList<>(); List
> res=new linkedList<>(); Deque
queue=new linkedList<>(); queue.add(root); while(!queue.isEmpty()){ List temp=new linkedList<>(); for(int i=queue.size();i>0;i--){ TreeNode node=queue.removeFirst(); temp.add(node.val); if(node.left!=null) queue.addLast(node.left); if(node.right!=null) queue.addLast(node.right); } res.add(temp); if(queue.isEmpty()) break; temp=new linkedList<>(); for(int i=queue.size();i>0;i--){ TreeNode node=queue.removeLast(); temp.add(node.val); if(node.right!=null) queue.addFirst(node.right); if(node.left!=null) queue.addFirst(node.left); } res.add(temp); } return res; } 方法二:层序遍历 + 倒序
public List> levelOrder(TreeNode root) { if(root==null) return new linkedList<>(); List
> res=new linkedList<>(); Queue
queue=new linkedList<>(); queue.add(root); while(!queue.isEmpty()){ List temp=new linkedList<>(); for(int i=queue.size();i>0;i--){ TreeNode node=queue.poll(); temp.add(node.val); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } if(res.size()%2==1) Collections.reverse(temp);//判断奇偶层 res.add(temp); } return res; } 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)