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,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3] ]
从底部层序遍历其实还是从顶部开始遍历,只不过最后存储的方式有所改变。代码如下:
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; } };
本文介绍了一种从底部向上进行层序遍历二叉树的方法,并提供了一个迭代实现的C++代码示例。该算法从根节点开始,逐层访问每个节点,最终将结果倒序存储以达到从下到上的遍历效果。
1546

被折叠的 条评论
为什么被折叠?



