BM26 求二叉树的层序遍历

import java.util.*;
public class Solution {
          
   
    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
          
   
        ArrayList<ArrayList<Integer> > res = new ArrayList();
        if (root == null)
            //如果是空,则直接返回空数组
            return res;
        //队列存储,进行层次遍历
        Queue<TreeNode> q = new ArrayDeque<TreeNode>();
        q.add(root);
        while (!q.isEmpty()) {
          
   
            //记录二叉树的某一行
            ArrayList<Integer> row = new ArrayList();
            int n = q.size();
            //因先进入的是根节点,故每层节点多少,队列大小就是多少
            for (int i = 0; i < n; i++) {
          
   
                TreeNode cur = q.poll();
                row.add(cur.val);
                //若是左右孩子存在,则存入左右孩子作为下一个层次
                if (cur.left != null)
                    q.add(cur.left);
                if (cur.right != null)
                    q.add(cur.right);
            }
            //每一层加入输出
            res.add(row);
        }
        return res;
    }
}
经验分享 程序员 微信小程序 职场和发展