[LeetCode]107. Binary Tree Level Order Traversal II
来源:互联网 发布:java批量上传文件 编辑:程序博客网 时间:2024/05/20 18:20
[LeetCode]107. Binary Tree Level Order Traversal II
题目描述
思路
BFS和DFS均可
BFS需要保存当前level中节点的个数
详见代码
代码
#include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public: /* //BFS vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> res; if (root == NULL) return res; queue<TreeNode*> q; int count = 0; res.push_back({ root->val }); if (root->left || root->right) { count = 1; q.push(root); } while (q.size()) { int temp = 0; vector<int> level; while (count--) { TreeNode* node = q.front(); q.pop(); if (node->left) { ++temp; level.push_back(node->left->val); q.push(node->left); } if (node->right) { ++temp; level.push_back(node->right->val); q.push(node->right); } } if(level.size()) res.push_back(level); count = temp; } reverse(res.begin(), res.end()); return res; } */ //DFS vector<vector<int>> levelOrderBottom(TreeNode* root, int level = 0) { DFS(root, 0); reverse(res.begin(), res.end()); return res; } void DFS(TreeNode* root, int level) { if (root == NULL) return; if (level == res.size()) res.push_back({}); res[level].push_back(root->val); DFS(root->left, level + 1); DFS(root->right, level + 1); }private: vector<vector<int>> res;};int main() { TreeNode* node1 = new TreeNode(3); TreeNode* node2 = new TreeNode(9); TreeNode* node3 = new TreeNode(20); TreeNode* node4 = new TreeNode(15); TreeNode* node5 = new TreeNode(7); node1->left = node2; node1->right = node3; node3->left = node4; node3->right = node5; vector<vector<int>> res; Solution s; res = s.levelOrderBottom(node1); for (auto p : res) { for (auto q : p) { cout << q << " "; } cout << endl; } system("pause"); return 0;}
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
- 2.8_线段
- log4j的常用配置总结
- Matlab样本增加
- java版的二维码生成器
- Hadop_HDF分布式布置
- [LeetCode]107. Binary Tree Level Order Traversal II
- 调优之内存调优-NUMA
- 【AndroidStudio】小米 DELETE_FAILED_INTERNAL_ERROR
- H5页面仿原生列表会话左滑显示删除键--整体滑动
- spark-streaming-[4]-Window Operations
- 2.8.2_网格的绘制
- 纵论“新零售”
- 2.2.补基础之shell和Makefile
- 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)