在二叉树里,除了前后序遍历,还有一种蛇形遍历算法,小伙伴们知道该怎么实现吗?文章下面就为你演示一下。
例:
package main; import java.util.ArrayList; import java.util.List; public class text { public static void main(String arge[]) { /*定义二维数据*/ int a[][] = { { 1 , 2 , 3 , 4 } , { 5 , 6 , 7 , 8 } , { 9 , 10 , 11 , 12 } , { 13 , 14 , 15 , 16 } }; /*int a[][]={ {1,2,3}, {4,5,6}, {7,8,9} };*/ /* * 下标为矩阵-圈数 * * * */ int n = a.length; /*矩阵的大小*/ int x; /*横向*/ int y; /*纵向*/ int rand; /*圈数*/ List < Integer > list = new ArrayList < > (); /*矩形为长度为一时*/ if (n == 1) { System.out.println(a[0][0]); } else { for (rand = 0; rand <= n / 2; rand++) { x = n - rand - 1; for (y = rand; y < n - rand; y++) { System.out.print(a[x][y] + ","); list.add(a[x][y]); } System.out.println("\n"); y = n - rand - 1; for (x = n - rand - 2; x >= rand; x--) { System.out.print(a[x][y] + ","); list.add(a[x][y]); } System.out.println("\n"); x = rand; for (y = n - rand - 2; y >= rand; y--) { System.out.print(a[x][y] + ","); list.add(a[x][y]); } System.out.println("\n"); y = rand; for (x = rand + 1; x < n - rand - 1; x++) { System.out.print(a[x][y] + ","); list.add(a[x][y]); } } } for (int l = 1; l <= list.size(); l++) { System.out.print(list.get(l - 1) + "\t"); for (int v = 1; v <= list.size(); v++) { if (l == v * 4) { System.out.print("\n"); } } } } }
以上就是本篇文章的所有内容,更多java常见问题及解决方法,请持续关注本站了解具体。
推荐阅读: