[LeetCode] Binary Tree Level Order Traversal II 二叉树层序遍历之二
2014-10-26 05:23
731 查看
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
return its bottom-up level order traversal as:
从底部层序遍历其实还是从顶部开始遍历,只不过最后存储的方式有所改变,可以参见我之前的博文 /article/4901519.html。 代码如下:
解法一:
下面我们来看递归的解法,核心就在于我们需要一个二维数组,和一个变量level,当level递归到上一层的个数,我们新建一个空层,继续往里面加数字,参见代码如下:
解法二:
类似题目:
Binary Tree Zigzag Level Order Traversal
Binary Tree Level Order Traversal
LeetCode All in One 题目讲解汇总(持续更新中...)
For example:
Given binary tree
{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3] ]
从底部层序遍历其实还是从顶部开始遍历,只不过最后存储的方式有所改变,可以参见我之前的博文 /article/4901519.html。 代码如下:
解法一:
// Iterative class Solution { public: vector<vector<int> > levelOrderBottom(TreeNode *root) { vector<vector<int> > res; if (root == NULL) return res; queue<TreeNode*> q; q.push(root); while (!q.empty()) { vector<int> oneLevel; int size = q.size(); for (int i = 0; i < size; ++i) { TreeNode *node = q.front(); q.pop(); oneLevel.push_back(node->val); if (node->left) q.push(node->left); if (node->right) q.push(node->right); } res.insert(res.begin(), oneLevel); } return res; } };
下面我们来看递归的解法,核心就在于我们需要一个二维数组,和一个变量level,当level递归到上一层的个数,我们新建一个空层,继续往里面加数字,参见代码如下:
解法二:
// Recurive class Solution { public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int> > res; levelorder(root, 0, res); return vector<vector<int> > (res.rbegin(), res.rend()); } void levelorder(TreeNode *root, int level, vector<vector<int> > &res) { if (!root) return; if (res.size() == level) res.push_back({}); res[level].push_back(root->val); if (root->left) levelorder(root->left, level + 1, res); if (root->right) levelorder(root->right, level + 1, res); } };
类似题目:
Binary Tree Zigzag Level Order Traversal
Binary Tree Level Order Traversal
LeetCode All in One 题目讲解汇总(持续更新中...)
相关文章推荐
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- 004-107-Binary Tree Level Order Traversal II 层序遍历二叉树之二
- LeetCode 103 Binary Tree Zigzag Level Order Traversal(二叉树层序遍历)
- 【LeetCode】Binary Tree Zigzag Level Order Traversal--- 层序遍历二叉树
- [LeetCode] Binary Tree Level Order Traversal 二叉树层序遍历
- LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy
- LeetCode 102 Binary Tree Level Order Traversal(二叉树层序遍历)
- leetcode题解:Tree Level Order Traversal II (二叉树的层序遍历 2)
- 【LeetCode】Binary Tree Level Order Traversal--(二叉树层序遍历)
- leetcode-Binary Tree Level Order Traversal 二叉树层序遍历
- 【LeetCode-面试算法经典-Java实现】【102-Binary Tree Level Order Traversal(二叉树层序遍历)】
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树
- 二叉树的层序遍历 改进版 Binary Tree Level Order Traversal II
- 【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
- LeetCode Binary Tree Level Order Traversal II (二叉树颠倒层序)
- Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode