层序遍历二叉树并输出到二维数组中

该代码使用Java实现了二叉树的层序遍历,通过创建一个队列并将头节点入队,逐层出队并添加其子节点,同时将每层的节点值存储到二维ArrayList中。主要涉及数据结构包括ArrayDeque和ArrayList。
摘要由CSDN通过智能技术生成
package org.example;


import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;

//层序遍历二叉树,输出到二维数组里
//思路:
//  利用队列,从头节点开始入队出队,出队时将子节点入队即可完成层序遍历;
//  从头节点开始,记录当前队列长度---当前队列长度即为当前层序长度;当前层完全出队后,记录当前队列长度;
public class LevelOrderBinaryTree {
    Queue<TreeNode> binaryQueue=new ArrayDeque<TreeNode>();
    public static void main(String[]args){

    }

    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
        if (root == null) {
            return new ArrayList();
        }
        // write code here
        Queue<TreeNode> binaryQueue = new ArrayDeque<TreeNode>();
        ArrayList<ArrayList<Integer>>res = new ArrayList();
        ArrayList<Integer>row = new ArrayList();
        binaryQueue.add(root);
        int length = 1;
        while (!binaryQueue.isEmpty()) {
            System.out.print(length);
            if (length == 0) {

                length = binaryQueue.size();
                res.add(row);
                row = new ArrayList();
            }
            TreeNode cur = binaryQueue.poll();
            row.add(cur.val);
            if (cur.left != null) {
                binaryQueue.add(cur.left);
            }

            if (cur.right != null) {
                binaryQueue.add(cur.right);
            }

            length--;
        }
        res.add(row);
        return res;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值