目录
- 题目描述:
- 示例:
- 解法:
题目描述:
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
3/ \9 20/ \15 7
返回其自底向上的层次遍历为:
[[15,7],[9,20],[3]]
解法:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<vector<int>> levelOrderBottom(TreeNode* root) {vector<vector<int>> res;if(root){vector<int> level;vector<TreeNode*> cur;cur.push_back(root);vector<TreeNode*> nxt;while(!cur.empty()){nxt.clear();level.clear();for(TreeNode* node : cur){level.push_back(node->val);if(node->left){nxt.push_back(node->left);}if(node->right){nxt.push_back(node->right);}}res.push_back(level);cur = nxt;}}res = vector<vector<int>>(res.rbegin(), res.rend());return res;}
};