国外做设计的网站有哪些免费做简历的网站
2026/2/9 20:56:26 网站建设 项目流程
国外做设计的网站,有哪些免费做简历的网站,wordpress新建全屏页面,拼多多网店注册一、层序遍历核心概念 1.1 什么是层序遍历? 层序遍历(Level Order Traversal)是一种广度优先搜索(BFS) 算法,它按照树的层次,从上到下、从左到右逐层访问每个节点。 示例二叉树:1 ← 第1层/ \2 3 ← 第2层/ \ \4 5 6 ← 第3层层序遍历结果:[[1…一、层序遍历核心概念1.1 什么是层序遍历?层序遍历(Level Order Traversal)是一种广度优先搜索(BFS)算法,它按照树的层次,从上到下、从左到右逐层访问每个节点。示例二叉树: 1 ← 第1层 / \ 2 3 ← 第2层 / \ \ 4 5 6 ← 第3层 层序遍历结果:[[1], [2, 3], [4, 5, 6]] 访问顺序:1 → 2 → 3 → 4 → 5 → 61.2 与深度优先搜索(DFS)对比特性层序遍历(BFS)深度优先搜索(DFS)数据结构队列(Queue)栈(Stack)访问顺序层次顺序深度优先空间复杂度O(w),w为最大宽度O(h),h为树高应用场景最短路径、层次相关路径查找、回溯二、基础层序遍历实现2.1 基本实现(返回一维数组)// 基本层序遍历:返回所有节点的值(不区分层次)vectorintlevelOrderSimple(TreeNode*root){vectorintresult;if(!root)returnresult;queueTreeNode*q;// 核心数据结构:队列q.push(root);while(!q.empty()){TreeNode*node=q.front();// 1. 取队首q.pop();// 2. 出队result.push_back(node-val);// 3. 处理当前节点// 4. 将子节点入队(先左后右)if(node-left)q.push(node-left);if(node-right)q.push(node-right);}returnresult;}// 示例树输出:[1, 2, 3, 4, 5, 6]2.2 分层存储的实现(返回二维数组)// 分层存储的层序遍历:每层一个子数组vectorvectorintlevelOrder(TreeNode*root){vectorvectorintresult;if(!root)returnresult;queueTreeNode*q;q.push(root);while(!q.empty()){intlevelSize=q.size();// 关键:记录当前层节点数vectorintcurrentLevel;// 处理当前层的所有节点for(inti=0;ilevelSize;i++){TreeNode*node=q.front();q.pop();currentLevel.push_back(node-val);// 将下一层节点入队if(node-left)q.push(node-left);if(node-right)q.push(node-right);}result.push_back(currentLevel);// 将当前层加入结果}returnresult;}// 示例树输出:[[1], [2, 3], [4, 5, 6]]三、层序遍历执行过程详解3.1 执行过程可视化树结构: 1 / \ 2 3 / \ \ 4 5 6 执行过程追踪表: | 循环 | 队列内容 | 当前层大小 | 当前处理节点 | 操作 | 当前结果层 | |------|-----------------|------------|--------------|---------------------|--------------| | 初始 | [1] | - | - | 初始化 | [] | | 1 | [1] | 1 | 1 | 处理1,入队2、3 | [1] | | | [2, 3] | | | 完成第1层 | | | 2 | [2, 3] | 2 | 2 | 处理2,入队4、5 | [2] | | | [3, 4, 5] | | 3 | 处理3,入队6 | [2, 3] | | | [4, 5, 6] | | | 完成第2层 | | | 3 | [4, 5, 6] | 3 | 4 | 处理4,无子节点 | [4] | | | [5, 6] | | 5 | 处理5,无子节点 | [4, 5] | | | [6] | | 6 | 处理6,无子节点 | [4, 5, 6] | | | [] | | | 完成第3层 | | 最终结果:[[1], [2, 3], [4, 5, 6]]3.2 队列状态变化图时间轴: t0 → t1 → t2 → t3 队列: [1] → [2,3] → [4,5,6] → [] ↓ ↓ ↓ ↓ 处理: 1 2 → 3 4 → 5 → 6 完成 层次: 第1层 第2层 第3层四、层序遍历的常见变种4.1 自底向上层序遍历// 从底层到顶层的层序遍历vectorvectorintlevelOrderBottom(TreeNode*root){vectorvectorintresult;if(!root)returnresult;queueTreeNode*q;q.push(root);while(!q.empty()){intlevelSize=q.size();vectorintcurrentLevel;for(inti=0;ilevelSize;i++){TreeNode*node=q.front();q.pop();currentLevel.push_back(node-val);if(node-left)q.push(node-left);if(node-right)q.push(node-right);}// 关键区别:每次插入到结果的开头result.insert(result.begin(),currentLevel);}returnresult;}// 示例树输出:[[4, 5, 6], [2, 3], [1]]4.2 锯齿形层序遍历(Z字形遍历)// 锯齿形层序遍历:一层从左到右,下一层从右到左vectorvectorintzigzagLevelOrder(TreeNode*root){vectorvectorintresult;if(!root)returnresult;queueTreeNode*q;q.push(root);boolleftToRight=true;// 方向标志while(!q.empty()){intlevelSize=q

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询