怎么做公司网站的手机客户端,网站开发的软硬件需求,什么软件可以建设网站,北京建设银行支行查询官方网站目录 题干
解题思路 总结与反思 题干
给你二叉树的根节点 root #xff0c;返回其节点值的 层序遍历 。 #xff08;即逐层地#xff0c;从左到右访问所有节点#xff09;。
示例 1#xff1a; 输入#xff1a;root [3,9,20,null,null,15,7]
输出#xff1a;[[3],[9…目录 题干
解题思路 总结与反思 题干
给你二叉树的根节点 root 返回其节点值的 层序遍历 。 即逐层地从左到右访问所有节点。
示例 1 输入root [3,9,20,null,null,15,7]
输出[[3],[9,20],[15,7]]示例 2
输入root [1]
输出[[1]]示例 3
输入root []
输出[]
解题思路
层序遍历一个二叉树就是从左到右一层一层的去遍历二叉树。我们需要借用一个辅助数据结构即队列来实现队列先进先出符合一层一层遍历的逻辑。 我们把根节点入队列 把根节点放入第一层的数组再放入结果数组将根节点的左右节点放入队列空节点不入栈将根节点从队列中弹出。现在队列里面包含了下一层所有的节点为了遍历我们需要计算队列的大小然后遍历队列将每个元素放入这一层的数组把左右节点入队列弹出当前节点遍历完后将这一层的数组放入结果数组。
class Solution {
public:vectorvectorint levelOrder(TreeNode* root) {vectorvectorint result;queueTreeNode* que;if(root ! NULL){que.push(root);}while(!que.empty()){//建立每一层的数组vectorint vec;// 如何判断每一层的个数//记录队列的大小int size que.size();// 遍历队列放入数组for(int i 0; i size; i ){//出队列第一个元素放入数组TreeNode* node que.front();vec.push_back(node-val);//将左右节点入队列if(node-left) que.push(node-left);if(node-right) que.push(node-right);//将当前节点弹出que.pop();} // 将这一层的数组放入结果数组result.push_back(vec);}return result;}
}; 总结与反思
常见的错误 vector赋值方式
vectorinta;
for(int i0;i10;i){a[i]i;}
因为下标只能用来获取已经存在的元素。
正确的写法是用 a.push_back(i)