层序遍历(广度优先搜索)-102
  FHUfYd9S4EP5 19天前 47 0

题目描述

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

解题思路

这里我们层次遍历我们需要使用到队列这个数据结构,我们依次从根节点开始遍历,我们需要使用一个变量来记录此时我们队列中元素的数量,因为这样我们才知道这一层我们需要从队列中弹出多少个元素,弹出的元素我们加入到集合中,然后再把弹出元素的左右孩子节点依次添加到我们的队列中,当然这里我们还要判断遍历结束的条件--就是当我们这一层的所有元素都没有左右孩子节点就结束我们的遍历了

代码实例

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> result = new ArrayList<>();

        if (root == null) {
            return result;
        }
        // TreeNode index=root;
        Queue<TreeNode> queue = new LinkedList<>();
        //用来判断遍历终止的条件
        int judge = 1;
        queue.add(root);
        while (judge != 0) {
            int size = queue.size();
            //用来判断遍历终止的条件
            int xiao = 0;
            List<Integer> list = new ArrayList<>();
            for (int i = 1; i <= size; i++) {
                TreeNode temp = queue.poll();
                list.add(temp.val);
                if (temp.left != null) {
                    queue.add(temp.left);
                    xiao = 1;
                }
                if (temp.right != null) {
                    queue.add(temp.right);
                    xiao = 1;
                }

            }
            result.add(list);
            if (xiao == 1) {
                judge = 1;
            } else {
                judge = 0;
            }
        }
        return result;
    }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 19天前 0

暂无评论

推荐阅读
  FHUfYd9S4EP5   2天前   19   0   0 Java
  sSh3rBaiME5f   3天前   22   0   0 Java
  qCe06rFCa8NK   2天前   15   0   0 Java
  ZTo294hNoDcA   2天前   19   0   0 Java
  FHUfYd9S4EP5   2天前   16   0   0 Java
  QGiRIwDaZAe8   3天前   18   0   0 Java
FHUfYd9S4EP5