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 int整型二维数组 */ public static LinkedList<LinkedList<Integer>> arrayList = new LinkedList<>(); public int[][] ZLevelOrder(TreeNode pRoot){ // write code here search(pRoot,1); int[][] arr = new int[arrayList.size()][]; for(int i=0;i<arrayList.size();i++){ arr[i] = new int[arrayList.get(i).size()]; if(i%2==0){ for(int j=0;j<arrayList.get(i).size();j++){ arr[i][j] = arrayList.get(i).get(j); } }else { for(int j=arrayList.get(i).size()-1;j>=0;j--){ arr[i][arrayList.get(i).size()-1-j] = arrayList.get(i).get(j); } } } return arr; } public void search(TreeNode root,int depth){ if(root==null) { return; } if(arrayList.size()<depth){ LinkedList<Integer> linkedList = new LinkedList<>(); arrayList.add(linkedList); } arrayList.get(depth-1).add(root.val); search(root.left,depth+1); search(root.right,depth+1); } }
本题主要考察的知识点是二叉树的层序遍历,所用编程语言是java。
我们可以根据二叉树的深度非常方便的进行二叉树的层序遍历,二叉树层序遍历代码如下:
public void search(TreeNode root,int depth){
if(root==null) {
return;
}
if(arrayList.size()<depth){
LinkedList<Integer> linkedList = new LinkedList<>();
arrayList.add(linkedList);
}
arrayList.get(depth-1).add(root.val);
search(root.left,depth+1);
search(root.right,depth+1);
} 然后我们根据二叉树的深度调整每层顺序,得出答案