牛客题霸NC15题解
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3?tpId=117&&tqId=34936&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
求二叉树的层序遍历
难度:Medium
二叉树的层序遍历使用队列来实现,代码如下:
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList<>> */ public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { // write code here if(root == null){ return new ArrayList<>(); } LinkedList<TreeNode> queue = new LinkedList<>(); ArrayList<ArrayList<Integer>> lists = new ArrayList<>(); ArrayList<Integer> list; queue.offer(root); while(!queue.isEmpty()){ list = new ArrayList<>(); TreeNode tail = queue.peekLast(); while(true){ TreeNode cur = queue.poll(); list.add(cur.val); if(cur.left != null){ queue.offer(cur.left); } if(cur.right != null){ queue.offer(cur.right); } if(cur == tail){ break; } } lists.add(list); } return lists; } }