java二叉树蛇形遍历如何实现?二叉树遍历算法

TheDisguiser 2020-07-14 17:27:27 java常见问答 7691

在二叉树里,除了前后序遍历,还有一种蛇形遍历算法,小伙伴们知道该怎么实现吗?文章下面就为你演示一下。

例:

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常见问题及解决方法,请持续关注本站了解具体。

推荐阅读:

二叉树的遍历算法有哪些?通常用在何处?

b树是二叉树吗?b树是什么树?

二叉树的度是什么意思?二叉树是什么?