在一个牧场中,有很多牛。为了方便管理,牧场主将牛的编号排列成一棵二叉树。现在牧场主想知道每层牛的编号。请按照从上到下,从左到右的顺序,返回每层牛的编号,但是要求每一层的遍历顺序为Z字形(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
区块链毕设网qklbishe.com为您提供问题的解答
在一个牧场中,有很多牛。为了方便管理,牧场主将牛的编号排列成一棵二叉树。现在牧场主想知道每层牛的编号。请按照从上到下,从左到右的顺序,返回每层牛的编号,但是要求每一层的遍历顺序为Z字形(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
非递归+队列
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 int[][] ZLevelOrder (TreeNode root) { // write code here if(root==null){ return new int[0][0]; } ArrayList<ArrayList<Integer>> listAll=new ArrayList<>(); Queue<TreeNode> queue=new LinkedList<>(); queue.add(root); int flag=1; while(!queue.isEmpty()){ int size=queue.size(); ArrayList<Integer> list=new ArrayList<>(); for(int i=0;i<size;i++){ TreeNode node=queue.poll(); list.add(node.val); if(node.left!=null){ queue.add(node.left); } if(node.right!=null){ queue.add(node.right); } } if(flag%2==0){ Collections.reverse(list); } listAll.add(list); flag++; } int arr[][]=new int[listAll.size()][]; for(int i=0;i<arr.length;i++){ arr[i]=new int[listAll.get(i).size()]; for(int j=0;j<arr[i].length;j++){ arr[i][j]=listAll.get(i).get(j); } } return arr; } }
59:41
以上就是关于问题在一个牧场中,有很多牛。为了方便管理,牧场主将牛的编号排列成一棵二叉树。现在牧场主想知道每层牛的编号。请按照从上到下,从左到右的顺序,返回每层牛的编号,但是要求每一层的遍历顺序为Z字形(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训