题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
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 pRoot TreeNode类 * @return int整型ArrayList<ArrayList<>> */ public ArrayList<ArrayList<Integer>> Print (TreeNode pRoot) { int i=0; //创建一个list集合存放层级节点 ArrayList<ArrayList<Integer>> list=new ArrayList<>(); postTraversal(pRoot,i,list); for(int j=0;j<list.size();j++){ //将list集合索引为奇数的集合反转 if(j%2!=0){ Collections.reverse(list.get(j)); } } return list; } //递归存节点值 public void postTraversal (TreeNode root,int i,ArrayList<ArrayList<Integer>> list) { //节点非空将节点存到list集合的第i层 if(root!=null){ //若第i层不存在则先创建第i层 if(list.size()<i+1){ list.add(new ArrayList<>()); } //将节点存入第i层 list.get(i).add(root.val); //i+1=>层级+1 postTraversal(root.left,i+1,list); postTraversal(root.right,i+1,list); } } }