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);
} 然后我们根据二叉树的深度调整每层顺序,得出答案

京公网安备 11010502036488号