二叉树层次遍历c语言_[LeetCode] 107. 二叉树的层次遍历 II
题目链接 : https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/
题目描述:
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如: 给定二叉树 [3,9,20,null,null,15,7],
3/ 9 20/ 15 7
返回其自底向上的层次遍历为:
[[15,7],[9,20],[3]
]
思路:
与上一题层次遍历一样,只不过输出的顺序取反了!
所以只需要从头添加数组就可以了!
思路一: 迭代
思路二: 递归
代码:
思路一:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:from collections import dequeif not root: return []queue = deque()queue.appendleft(root)res = []while queue:tmp = []n = len(queue)for _ in range(n):node = queue.pop()tmp.append(node.val)if node.left:queue.appendleft(node.left)if node.right:queue.appendleft(node.right)res.insert(0, tmp)return res
java
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {public List<List<Integer>> levelOrderBottom(TreeNode root) {List<List<Integer>> res = new LinkedList<>();if (root == null) return res;Deque<TreeNode> queue = new LinkedList<>();queue.add(root);while (!queue.isEmpty()) {List<Integer> tmp = new ArrayList<>();int n = queue.size();for (int i = 0; i < n; i++) {TreeNode node = queue.poll();tmp.add(node.val);if (node.left != null) queue.add(node.left);if (node.right != null) queue.add(node.right);}res.add(0, tmp);}return res; }
}
思路二:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:res = []def helper(root, depth):if not root: return if depth == len(res):res.insert(0, [])res[-(depth+1)].append(root.val)helper(root.left, depth+1)helper(root.right, depth+1)helper(root, 0)return res
java
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {public List<List<Integer>> levelOrderBottom(TreeNode root){List<List<Integer>> res = new LinkedList<>();helper(res, root, 0);return res;}private void helper(List<List<Integer>> res, TreeNode root, int depth) {if (root == null) return;if (res.size() == depth) res.add(0, new ArrayList<>());res.get(res.size() - depth - 1).add(root.val);helper(res, root.left, depth + 1);helper(res, root.right, depth + 1);}
}
一起刷LeetCode - 威行天下 - 博客园www.cnblogs.com
二叉树层次遍历c语言_[LeetCode] 107. 二叉树的层次遍历 II相关推荐
- 二叉树查找结点c语言_二叉树操作详解
(给C语言与CPP编程加星标,提升C/C++技能) 来源:https://segmentfault.com/a/1190000008850005 [导读]:树是数据结构中的重中之重,尤其以各类二叉树为 ...
- 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II
❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...
- LeetCode 107. 二叉树的层次遍历 II(队列)
1. 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 ...
- 47. Leetcode 107 - 二叉树的层次遍历 ii (二叉树-二叉树遍历)
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 . (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例 1:输入:root = [3,9,20,null,null,15, ...
- Leetcode 107. 二叉树的层次遍历 II 解题思路及C++实现
解题思路: 使用队列实现二叉树的层序遍历,因为题目中要求每一层的val存储在一个vector中,所以在内循环中,还需要一个队列,用以存储更新每一层的节点. 在最后,需要将得到的res数组逆序. /** ...
- leetcode 107. 二叉树的层次遍历 II(维护两个队列,通过异或运算切换)
题目 思路 一个比较啰嗦的解法 维护两个queue,当前队列节点的孩子,都放进另外一个队列里去. 树每切换一层,就切换一次队列,并且把新队列的值全部存起来. 整体上来看,是自顶向下遍历,最后翻转整个l ...
- Leetcode 107.二叉树的层序遍历 II (每日一题 20210628 同类型题)
给定一个二叉树,返回其节点值自底向上的层序遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \1 ...
- leetcode 107 --- 二叉树程序遍历 ii
1 题目 给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历) 2 解法 2.1 我的最初解法 按照正常的层序遍历应该是从上到下的,只要用一个栈先临时存 ...
- 二叉树的深度_[LeetCode 104] 二叉树的深度
题目描述 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. ** 示例:** 给定二叉树 [3,9,20,null,n ...
最新文章
- c++引用与指针的区别
- 实现物联网项目,你需要提前知道的6件事情
- BookStack在线文档管理系统 v2.9
- Go单测测试 — 数据库 CRUD 的 Mock 测试
- rc脚本(类的定义与脚本的结构、start方法、stop和status方法、以daemon方式启动)...
- 如何在矩池云GPU云中安装MATLAB 2019b软件
- React-Native入门(2)-简单阐述跳转
- 实录:oracle下大表清理整改
- 永久免费http升级到https
- css内容过长显示省略号的几种解决方法
- 从Word Embedding到Bert模型——自然语言处理预训练技术发展史
- js检查关闭浏览器方法
- 1、matplotlib绘制一个简单的图形
- CRM用户体验对比(二):导入联系人—— 百会、WorkXP
- 幼儿园门口摆个考勤机 家长接孩子得打卡
- php生产环境性能瓶颈分析,使用XHProf分析PHP性能瓶颈(一)
- Tokenized的设计哲学(三)
- 编写高效的JAvascript——Nicholas C. Zakas(读书笔记)
- 使用Jena-TDB存储RDF本体、知识图谱文件
- yarn : 无法加载文件 D:\Development\nvm\node_global\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c