给你二叉树的根节点 root
,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[15,7],[9,20],[3]]
示例 2:
输入:root = [1]
/**
* 层次遍历
*/
vector<vector<int>> levelOrder(TreeNode *root) {
queue<TreeNode *> que;
vector<vector<int>> result;
//如果节点不为空则直接放入
if (root != NULL) que.push(root);
//如果队列为空则结束循环
while (!que.empty()) {
//用于记录每层节点记录加入队列的数量
int size = que.size();
vector<int> vec;
//根据size的数量进行相对应的操作
while (size--) {
//取出相对应的元素
TreeNode *node = que.front();
//弹出对应元素
que.pop();
//加入数组
vec.push_back(node->val);
//加入完当前节点后再选择它的左节点和右节点
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
// 最后返回使用二维数组
result.push_back(vec);
}
//逆序直接反转数组即可
reverse(result.begin(),result.end());
return result;
}
输出:[[1]]
示例 3:
输入:root = [] 输出:[]
提示:
- 树中节点数目在范围
[0, 2000]
内 -1000 <= Node.val <= 1000