LeetCode题解-107. 二叉树的层次遍历 II(树 队列)
题目
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
1 | 3 |
返回其自底向上的层次遍历为:
1 | [ |
分析
树的层次遍历,即一层一层的从左至右扫描每一个元素,题目虽然要求返回自底向上的结果,但扫描时仍可从上至下扫描,存储时倒序存储即可。
vector向量结构通过insert方法可以从前面插入数据,实现倒序存储。当然,如果想要实现正序存储,即题目:[102.二叉树的层次遍历]中的要求,只需将insert改为push_back方式保存结果即可。
queue队列结构为先入先出,将以树的各个节点为根节点的子树依次push入队列,再从队列头依次读出并从vector头部insert进vector中。
实现树的入队过程,可以首先将整棵树放入,读取其根节点后弹出,再将左右子树依次放入,读取根节点后再次弹出,不断循环,直至没有树可以放入队列(左右子树均为空,到达叶子节点)。
C++实现
1 | /** |
运行结果
输入
1 | [3,9,20,null,null,15,7] |
输出
1 | [[15,7],[9,20],[3]] |
-------------纸短情长 下次再见-------------
关注微信公众号,获取更多精彩~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 码农爱学习的博客!
评论