题目描述
给你一个二叉树,请您返回其按层序遍历得到的节点值(即逐层的,从左到右的访问所有节点)
输入输出样例
二叉树: [3,9,20,null,null,15,7],
返回其层序遍历结果:
1 2 3 4 5
| [ [3], [9,20], [15,7] ]
|
题解
层序遍历一个二叉树,就是从左到右一层一层的去遍历二叉树。我们需要借助一个辅助数据结构即队列来实现,队列的性质:先进先出。这也很符合一层一层遍历的逻辑,对应的栈则是适用于模拟深度优先遍历。
这个也是一个模板,遇到类似的可以直接套用它,对细节处再进行小小的修改。具体代码如下 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*> res; if (root != nullptr) res.push(root); vector<vector<int>> ans; while (!res.empty()) { vector<int> vec; int size = res.size(); for (int i = 0; i < size; i++) { TreeNode* node = res.front(); res.pop(); vec.push_back(node->val); if (node->left) res.push(node->left); if (node->right) res.push(node->right); } ans.push_back(vec); } return ans; } };
|