[leetcode]: 107. Binary Tree Level Order Traversal II
来源:互联网 发布:协同过滤算法的研究 编辑:程序博客网 时间:2024/06/07 16:31
1.题目
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]]
二叉树按层来遍历,自底向上
2.分析
BFS:广度优先遍历,用vector存每层遍历的结果。最后reverse
DFS:深度优先遍历,需要加额外参数level来标记当前元素在哪一层。
3.代码
BFS
class Solution {public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> ans; if (root == NULL) return ans; //广度优先用queue,深度优先用stack queue<TreeNode*> nodes; nodes.push(root); while (!nodes.empty()) { int num = nodes.size(); vector<int> level; for (int i = 0; i < num; i++) { TreeNode* tmp = nodes.front(); nodes.pop(); level.push_back(tmp->val); if (tmp->left != NULL) nodes.push(tmp->left); if (tmp->right != NULL) nodes.push(tmp->right); } ans.push_back(level); } reverse(ans.begin(),ans.end()); return ans; }};
DFS
class Solution {public: void DFS(vector<vector<int>>& ans,TreeNode* root, int level) { if (root == NULL) return; if (level >= ans.size()) ans.push_back(vector<int>()); ans[level].push_back(root->val); DFS(ans, root->left, level + 1); DFS(ans, root->right, level + 1); } vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> ans; if (root == NULL) return ans; DFS(ans, root, 0); reverse(ans.begin(), ans.end()); return ans; }};
阅读全文
0 0
- [LeetCode]102. Binary Tree Level Order Traversal&107. Binary Tree Level Order Traversal II
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- [Leetcode]Binary Tree Level Order Traversal II
- [leetcode]Binary Tree Level Order Traversal II
- LeetCode-Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- LeetCode | Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- 【LeetCode】Binary Tree Level Order Traversal II
- Android--防抖
- 腾讯2017暑期实习生编程题之构造回文
- Mybatis配置文件遇到java.lang.Integer can not found问题
- Android 操作系统的内存回收机制
- html5第九课时,声明变量
- [leetcode]: 107. Binary Tree Level Order Traversal II
- android xml解析 XmlPullParser & XmlSerializer
- Android中给定一个日期判断是周几.
- cmath
- 使用JAVA写的一个简易TCP通讯程序(一)
- 5040655.html
- html5第九课时,number数据类型
- 应用系统性能测试六大步
- 有用的git指令