树简单模板 📅 发布时间:2026/7/11 15:34:49 👁️ 浏览次数: 一、基础二叉树结点定义struct TreeNode { int val; TreeNode *left; // 左孩子 TreeNode *right; // 右孩子 TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };部分内容作用1TreeNode(int x)构造函数的声明参数x是要给结点赋的数值2:初始化列表的开始标志必须写在构造函数参数列表后面、函数体前面3val(x), left(nullptr), right(nullptr)初始化列表依次初始化 3 个成员变量4{}构造函数的函数体这里是空的因为所有初始化都在列表里完成了二、核心模板 1二叉树的 4 种遍历递归 迭代1. 前序遍历根→左→右// 递归版推荐蓝桥杯结点数≤1000不会栈溢出 void preorder(TreeNode* root, vectorint res) { if (!root) return; res.push_back(root-val); // 1. 访问根 preorder(root-left, res); // 2. 递归左子树 preorder(root-right, res); // 3. 递归右子树 } // 迭代版栈实现可选 void preorder_iter(TreeNode* root, vectorint res) { if (!root) return; stackTreeNode* stk; stk.push(root); while (!stk.empty()) { TreeNode* node stk.top(); stk.pop(); res.push_back(node-val); // 栈是后进先出先压右再压左保证左先出 if (node-right) stk.push(node-right); if (node-left) stk.push(node-left); } }2. 中序遍历左→根→右// 递归版 void inorder(TreeNode* root, vectorint res) { if (!root) return; inorder(root-left, res); // 1. 递归左子树 res.push_back(root-val); // 2. 访问根 inorder(root-right, res); // 3. 递归右子树 } // 迭代版栈实现可选 void inorder_iter(TreeNode* root, vectorint res) { if (!root) return; stackTreeNode* stk; TreeNode* cur root; while (cur || !stk.empty()) { while (cur) { // 一直往左走压栈 stk.push(cur); cur cur-left; } cur stk.top(); stk.pop(); res.push_back(cur-val); cur cur-right; // 转向右子树 } }3. 后序遍历左→右→根// 递归版 void postorder(TreeNode* root, vectorint res) { if (!root) return; postorder(root-left, res); // 1. 递归左子树 postorder(root-right, res); // 2. 递归右子树 res.push_back(root-val); // 3. 访问根 }4. 层序遍历BFS队列实现高频考点// 层序遍历按层输出返回一维数组蓝桥杯常用 void levelorder(TreeNode* root, vectorint res) { if (!root) return; queueTreeNode* q; q.push(root); while (!q.empty()) { TreeNode* node q.front(); q.pop(); res.push_back(node-val); if (node-left) q.push(node-left); // 左孩子入队 if (node-right) q.push(node-right); // 右孩子入队 } } // 进阶按层输出二维数组每层单独一行可选 vectorvectorint levelorder_by_level(TreeNode* root) { vectorvectorint res; if (!root) return res; queueTreeNode* q; q.push(root); while (!q.empty()) { int size q.size(); // 当前层的结点数 vectorint level; for (int i 0; i size; i) { TreeNode* node q.front(); q.pop(); level.push_back(node-val); if (node-left) q.push(node-left); if (node-right) q.push(node-right); } res.push_back(level); } return res; }三、核心模板 2前序 中序构造二叉树高频综合考点// 辅助哈希表快速查找中序序列中根结点的索引优化时间复杂度 unordered_mapint, int inorder_map; // 递归构造函数 // 参数preorder-前序数组inorder-中序数组pre_l/pre_r-当前前序区间in_l/in_r-当前中序区间 TreeNode* buildTree(vectorint preorder, vectorint inorder, int pre_l, int pre_r, int in_l, int in_r) { if (pre_l pre_r || in_l in_r) return nullptr; // 递归终止区间为空 int root_val preorder[pre_l]; // 前序首元素是根 TreeNode* root new TreeNode(root_val); int root_pos inorder_map[root_val]; // 中序中根的索引 int left_size root_pos - in_l; // 左子树的结点数 // 递归构造左子树前序区间[pre_l1, pre_lleft_size]中序区间[in_l, root_pos-1] root-left buildTree(preorder, inorder, pre_l1, pre_lleft_size, in_l, root_pos-1); // 递归构造右子树前序区间[pre_lleft_size1, pre_r]中序区间[root_pos1, in_r] root-right buildTree(preorder, inorder, pre_lleft_size1, pre_r, root_pos1, in_r); return root; } // 对外调用的简化接口 TreeNode* buildTree(vectorint preorder, vectorint inorder) { int n preorder.size(); inorder_map.clear(); for (int i 0; i n; i) { inorder_map[inorder[i]] i; // 建立中序值到索引的映射 } return buildTree(preorder, inorder, 0, n-1, 0, n-1); }四、核心模板 3二叉树的镜面反转结构修改// 递归版交换所有非叶结点的左右孩子 void mirrorTree(TreeNode* root) { if (!root) return; // 递归终止空结点 // 交换左右孩子 swap(root-left, root-right); // 递归处理左、右子树 mirrorTree(root-left); mirrorTree(root-right); }五、核心模板 4二叉树的属性计算1. 树的深度 / 高度int treeDepth(TreeNode* root) { if (!root) return 0; // 空树深度0 int left_depth treeDepth(root-left); int right_depth treeDepth(root-right); return max(left_depth, right_depth) 1; // 左右子树最大深度1 }2. 叶子结点个数int countLeaves(TreeNode* root) { if (!root) return 0; if (!root-left !root-right) return 1; // 叶结点左右都空 return countLeaves(root-left) countLeaves(root-right); }
「EEG脑电信号处理——(15)脑电图解读分步分析与核心要点」2026年03月09日 目录 一、前言 二、解读前的核心准备工作 2.1 确认 3 项核心患者信息 2.2 核查 EEG 记录设备参数 三、区分前景与背景波形 3.1 定义与区分原则 3.2 实例参考 四、背景波形特征描述 五、前景波形分类、描述与判定 5.1 前景波形的两大分类 5.2 脑源性活动的正常 / 异常… 2026/7/10 9:55:26
P8601 [蓝桥杯 2013 省 A] 剪格子【DFS】 P8601 [蓝桥杯 2013 省 A] 剪格子(疑似错题) 题目背景 本题不保证存在可以通过满足本题数据范围的任意数据做法。由于测试数据过水,可以通过此题的程序不一定完全正确(算法时间复杂度错误、或不保证正确性)。本题题目… 2026/7/9 17:40:51
超简单!百度贴吧一键自动签到(附Python完整脚本下载 )Windows 教程 养号用! 很多人每天都会手动打开贴吧签到,如果关注的贴吧比较多就会比较麻烦。本教程介绍如何在 Windows 电脑上实现自动签到,并通过系统定时任务实现 每天自动运行。运行的一个参考图如下 整个流程非常简单: 准备 Python 环境下载签到脚本配置 … 2026/7/7 4:23:17
蒲公英 X1 Pro 硬件组网实战:5步搭建《我的世界》24小时在线服务器,延迟低于30ms 蒲公英 X1 Pro 硬件组网实战:5步搭建《我的世界》24小时在线服务器,延迟低于30ms当《我的世界》玩家不再满足于局域网联机的限制,当好友分散在不同城市却渴望稳定的方块世界冒险,硬件级异地组网方案便成为资深玩家的终极选择。蒲公… 2026/7/11 15:33:46
高压隔离技术:ISOM8710与MKV42F256VLH16的工业应用 1. 高压安全隔离技术概述在工业自动化、电力电子和医疗设备等领域,高压电路与低压控制系统的安全隔离是确保人员和设备安全的关键需求。ISOM8710数字隔离器与MKV42F256VLH16微控制器的组合,为这类应用提供了可靠的解决方案。高压隔离的核心目标是在允许信… 2026/7/11 15:33:46
GNSS+PTP 混合组网:H3C BBU3120 基站 3 种时钟源自动切换策略 GNSSPTP混合组网:H3C BBU3120基站时钟源自动切换策略深度解析1. 工业通信场景下的高精度时间同步挑战在5G基站、工业自动化控制、电力系统同步等关键领域,纳秒级时间同步已成为刚需。传统单一时钟源方案存在明显短板:GNSS信号易受建筑物遮挡、… 2026/7/11 15:31:45
如何将Qwen3.5-4B-OptiQ-4bit集成到现有项目中:API调用最佳实践 如何将Qwen3.5-4B-OptiQ-4bit集成到现有项目中:API调用最佳实践 【免费下载链接】Qwen3.5-4B-OptiQ-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Qwen3.5-4B-OptiQ-4bit Qwen3.5-4B-OptiQ-4bit是一款专为Apple Silicon优化的4位混合精… 2026/7/11 15:31:45
UI-TARS桌面版:5分钟快速上手智能GUI自动化,彻底告别重复性工作 UI-TARS桌面版:5分钟快速上手智能GUI自动化,彻底告别重复性工作 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/u… 2026/7/11 15:31:45
L9958与STM32F303RC电机控制方案详解 1. 为什么选择L9958与STM32F303RC组合在电机控制领域,硬件选型直接决定了系统性能上限。L9958作为意法半导体(ST)专为汽车电子设计的H桥驱动芯片,其40V耐压和3A峰值电流能力,配合STM32F303RC的72MHz Cortex-M4内核与高级定时器,形… 2026/7/11 15:31:45
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/11 14:53:30
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/11 12:30:52
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/11 15:29:59