• 注册
当前位置:1313e > 默认分类 >正文

面试题32:从上到下打印二叉树 II

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行

思想:和普通的层次遍历不一样,这题需要记录每一层元素的个数,在一趟 while 就遍历完一层,然后再 add 到结果集里面,每趟遍历开始清零下一层元素个数 level ,每次入队一个结点,level++

  • 时间复杂度O(n),n 为结点个数
  • 空间都咋读O(1),结果需要开辟的空间,不算在开销里面
public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList<>();if (root == null) {return res;}Queue<TreeNode> queue = new LinkedList<TreeNode>();int level = 1; // 该层元素的个数queue.offer(root);while (!queue.isEmpty()){List<Integer> list = new ArrayList<Integer>();// len 保存当前层元素个数,level 重新记录下一层元素个数int len = level;level = 0;for (int i = 0; i < len; i++){TreeNode node = queue.poll();list.add(node.val);if (node.left != null) {queue.offer(node.left);level++;}if (node.right != null) {queue.offer(node.right);level++;}}res.add(list);}return res;
}

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录