按Z字形打印二叉树

来源:互联网 发布:荣威rx5改装矩阵式大灯 编辑:程序博客网 时间:2024/05/18 01:06

这里写图片描述
按照广度遍历去处理二叉树,但是对于每一层,设置一个布尔变量,来处理是否从右到左打印。

//如果为空节点,返回空的集合        if(pRoot == null) return new ArrayList<ArrayList<Integer>>();        //初始化一个双层链表        ArrayList<ArrayList<TreeNode>> list = new ArrayList<ArrayList<TreeNode>>();        ArrayList<TreeNode> listFloor = new ArrayList<TreeNode>();//每一层        listFloor.add(pRoot);//从左至右广度遍历        list.add(listFloor);        boolean leftToRight = true;//从右到左        while(listFloor.size() != 0)        {            ArrayList<TreeNode> listNextFloor = new ArrayList<TreeNode>();//Z型遍历            for(TreeNode treeNode : listFloor)            {                if(treeNode.left != null)                {                    listNextFloor.add(treeNode.left);                }                if(treeNode.right != null)                {                    listNextFloor.add(treeNode.right);                }            }            if(listNextFloor.size() != 0)            {                //颠倒顺序                if(leftToRight)                {                    ArrayList<TreeNode> leftToRightList = new ArrayList<TreeNode>();                    for(int i = listNextFloor.size() - 1;i >= 0;i --)                    {                        leftToRightList.add(listNextFloor.get(i));                    }                    leftToRight = false;                    list.add(leftToRightList);                }                else                {                    leftToRight = true;                    list.add(listNextFloor);                }            }                   listFloor = listNextFloor;        }        //将list里的值取出来        ArrayList<ArrayList<Integer>> treeNodeValList = new ArrayList<ArrayList<Integer>>();        for(ArrayList<TreeNode> treeList : list)        {            ArrayList<Integer> IntegerList = new ArrayList<Integer>();            for(TreeNode treeNode : treeList)            {                IntegerList.add(treeNode.val);            }            treeNodeValList.add(IntegerList);        }        return treeNodeValList;
0 0
原创粉丝点击