旅游网站前台怎么做,网站小logo设计,诺尔诺达网站建设,wordpress生成海报package Tree;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;/*** 请实现一个函数按照之字形打印二叉树#xff0c;即第一行按照从左到右的顺序打印#xff0c;第二层按照从右至左的顺序打印#xff0c;第三行按照从左到右的顺序打印import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;/*** 请实现一个函数按照之字形打印二叉树即第一行按照从左到右的顺序打印第二层按照从右至左的顺序打印第三行按照从左到右的顺序打印其他行以此类推。* 思路* 先按层次输出二叉树* 判断奇数层和偶数层* 反转arrayList*/
public class Solution9 {public static void main(String[] args) {int[] array {1, 2, 3, 4, 5, 6, 7, 8, 9};Solution9 Solution9 new Solution9();TreeNode treeNode Solution9.createBinaryTreeByArray(array, 0);for (ArrayList list :Solution9.Print(treeNode)) {System.out.println(list);}}/*** 之字形打印二叉树* 用reserve反转时间复杂度高** param pRoot* return*/public ArrayListArrayListInteger Print(TreeNode pRoot) {//arrayLists存储结果ArrayListArrayListInteger arrayLists new ArrayList();if (pRoot null) {return arrayLists;}ArrayListInteger arrayList new ArrayList();//使用队列先进先出QueueTreeNode queue new LinkedList();queue.add(pRoot);int start 0;int end 1;boolean leftToRight true;while (!queue.isEmpty()) {TreeNode temp queue.remove();//添加到本行的arrayListarrayList.add(temp.val);start;//每打印一个节点就把此节点的下一层的左右节点加入队列并记录下一层要打印的个数if (temp.left ! null) {queue.add(temp.left);}if (temp.right ! null) {queue.add(temp.right);}if (start end) {start 0;end queue.size();if (leftToRight) {arrayLists.add(arrayList);} else {arrayLists.add(reverse(arrayList));}leftToRight !leftToRight;arrayList new ArrayList();}}return arrayLists;}/*** 反转** param arrayList* return*/private ArrayListInteger reverse(ArrayListInteger arrayList) {ArrayListInteger arrayList1 new ArrayList();for (int i arrayList.size() - 1; i 0; i--) {arrayList1.add(arrayList.remove(i));}return arrayList1;}public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeNode(int val) {this.val val;}}/*** 数据转二叉树** param array* param index* return*/private TreeNode createBinaryTreeByArray(int[] array, int index) {TreeNode tn null;if (index array.length) {int value array[index];tn new TreeNode(value);tn.left createBinaryTreeByArray(array, 2 * index 1);tn.right createBinaryTreeByArray(array, 2 * index 2);return tn;}return tn;}
}转载于:https://www.cnblogs.com/wupeixuan/p/8623436.html