[BFS]107. Binary Tree Level Order Traversal II
来源:互联网 发布:魔方软件是什么 编辑:程序博客网 时间:2024/06/08 05:44
题目:
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3]]
题目分析:
1、容易看到题目要求根据给出的二叉树倒叙输出每层元素。
2、和之前完成的题目类似,这道题目也需要在BFS基础上准确判断出搜索进行到哪一层了,具体方法为设置参数th和ne来分别统计本层元素个数和下层元素个数(具体方法不作累述,详细见199)。
3、这道题的不同之处在于需要保存每层元素并倒叙输出。本题中采用的解决方法为每层循环时设置一个vector<int>保存每层元素,并压入一个临时的vector<vector<int>>中,待最后保存完所有层后在从尾到头将临时vector<vector<int>>中的元素压入答案vector<vector<int>>中实现倒叙。
代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */#include<queue> class Solution {public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> res; vector<vector<int>> _res; queue<TreeNode*> Q; Q.push(root); int th = 1; int ne = 0; if(root == NULL){ return res; } while(!Q.empty()){ vector<int> put; for(int i = 0; i< th; i++){ TreeNode* node = Q.front(); put.push_back(node.value); if(node->left != NULL){ Q.push(node->left); ne++; } if(node->right != NULL){ Q.push(node->right); ne++; } Q.pop(); } _res.push_back(put); th = ne; ne = 0; } for(int i = 0; i < _res.size(); i++){ res.push_back(_res[_res.size() - 1 - i]); } return res; }};
总结:
这道题目的一个难点在于如何实现倒叙,倒不是具体用两个vector实现很复杂,只是可能会容易出现始终纠结于如何倒叙BFS的问题上,从而耽搁了不必要的时间。
0 0
- BFS Binary Tree Level Order Traversal II
- leetcode-107. Binary Tree Level Order Traversal II-BFS
- [BFS]107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II(BFS)
- 107.Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 107. Binary Tree Level Order Traversal II
- 深度学习——八大开源框架
- CentOS 5.8系统配置本地yum源
- 批处理总结
- 【C#】之泛型集合
- 深入理解Node系列-细说Connect(下)
- [BFS]107. Binary Tree Level Order Traversal II
- 文件管理操作的命令及原理——Linux磁盘管理及文件系统管理
- 网口扫盲三:以太网芯片MAC和PHY的关系
- KVM 与 CentOS-6
- 存在障碍的点到点路径和问题(动态规划)
- arcgis api for js入门开发系列十一地图统计图
- 有时候别人要utf-8的数据。。
- 使用RXMLElement工具类解析XML
- 剑指offer——二叉搜索树的后序遍历序列