之字形打印二叉树

将父节点放入队列
取出的时候 先判断是否有孩子节点 有就放入队列中
输出的时候 判断层数的奇偶

https://www.nowcoder.com/practice/47e1687126fa461e8a3aff8632aa5559?tpId=190&tqId=35183&rp=1&ru=%2Fta%2Fjob-code-high-rd&qru=%2Fta%2Fjob-code-high-rd%2Fquestion-ranking&tab=answerKey

public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
        if (pRoot == null) {
            return ans;
        }
        Queue<TreeNode> list = new LinkedList<>();
        int num = 0; //记录当前是多少层
        list.add(pRoot); 
        while (list != null && list.size() != 0) {
            int count = list.size(); //放了几个节点
            ArrayList<Integer> res = new ArrayList<>();
            while (count != 0) { //输出一个父节点  就把左右孩子节点放入到队列中
                TreeNode node = list.poll();
                res.add(node.val);
                if (node.left != null) {
                    list.add(node.left);
                }
                if (node.right != null) {
                    list.add(node.right);
                }
                count--; //记录放了几个节点
            }
            num++; //记录当前是多少层
            if (num % 2 == 0) { //偶数层 从右往左
                for (int i = 0, j = res.size() - 1; i < j; i++, j--) {
                    int tem = res.get(i);
                    res.set(i, res.get(j));
                    res.set(j, tem);
                }
                ans.add(res);
            } else {
                ans.add(res);
            }
        }
        return ans;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码头薯条Pro

本文能帮到阁下,在下很开心!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值