import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return string字符串一维数组 */ public String[] levelOrder (TreeNode root) { // write code here Queue<TreeNode> que = new LinkedList<>(); if(root != null)que.add(root); List<String> ans = new ArrayList<>(); while(!que.isEmpty()){ StringBuilder sb = new StringBuilder(); int size = que.size(); // 这里要使用固定的size,不能在循环中使用que.size(),因为在循环中进行了元素删除操作,size是不断变化的 for(int i = 0; i < size; i++){ TreeNode cur = que.poll(); sb.append(cur.val); if(cur.left != null)que.add(cur.left); if(cur.right != null)que.add(cur.right); } ans.add(sb.toString()); } return ans.toArray(new String[ans.size()]); } }
就是层序遍历的应用