java面试题(剑指offer):按层打印二叉树

xiaoxiao2021-02-27  180

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public class ddd { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> alist=new ArrayList<ArrayList<Integer>>(); Queue<TreeNode> qu=new LinkedList<TreeNode>(); Queue<TreeNode> qu2=new LinkedList<TreeNode>(); if(pRoot==null){ return alist; } qu.add(pRoot); while(!qu2.isEmpty() || !qu.isEmpty()){ ArrayList<Integer> list=new ArrayList<Integer>(); while(!qu.isEmpty() &&qu.peek()!=null){ qu2.add(qu.peek()); list.add(qu.peek().val); qu.remove(); } alist.add(list); while(!qu2.isEmpty() && qu2.peek()!=null){ if(qu2.peek().left!=null){ qu.add(qu2.peek().left); } if(qu2.peek().right!=null){ qu.add(qu2.peek().right); } qu2.remove(); } } return alist; } }

转载请注明原文地址: https://www.6miu.com/read-11272.html

最新回复(0)