23.C++进阶:二叉树OJ|二叉树创建字符串|最近公共祖先|搜索树与双向链表|前中序构建二叉树|二叉树的非递归遍历

606. 根据二叉树创建字符串 - 力扣(LeetCode)

class Solution { public: string tree2str(TreeNode* root) { if (root == nullptr) return ""; string ret = to_string(root->val); if (root->left || root->right) { ret += '('; ret += tree2str(root->left); ret += ')'; } if (root->right) { ret += '('; ret += tree2str(root->right); ret += ')'; } return ret; } };

236. 二叉树的最近公共祖先 - 力扣(LeetCode)

若是二叉搜索树

class Solution { public: bool IsInTree(TreeNode* root, TreeNode* x) { if(root == nullptr) return false; return root == x || IsInTree(root->left, x) || IsInTree(root->right, x); } TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == NULL) return NULL; if(root == p || root == q) { return root; } bool pInLeft, pInRight, qInLeft, qInRight; pInLeft = IsInTree(root->left, p); pInRight =!pInLeft; qInLeft = IsInTree(root->left, q); qInRight =!qInLeft; if((pInLeft && qInRight) || (qInLeft && pInRight)) { return root; } else if(pInLeft && qInLeft) { return lowestCommonAncestor(root->left, p, q); } else if(pInRight && qInRight) { return lowestCommonAncestor(root->right, p, q); } assert(false); return NULL; } };

class Solution { public: bool GetPath(TreeNode* root, TreeNode* x, stack<TreeNode*>& path) { if(root == nullptr) return false; path.push(root); if(root == x) return true; if(GetPath(root->left, x, path)) return true; if(GetPath(root->right,x, path)) return true; path.pop(); return false; } TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { stack<TreeNode*> pPath, qPath; GetPath(root, p, pPath); GetPath(root, q, qPath); //两个路径找交点 while(pPath.size() != qPath.size()) { if(pPath.size() > qPath.size()) pPath.pop(); else qPath.pop(); } while(pPath.top() != qPath.top()) { pPath.pop(); qPath.pop(); } return pPath.top(); } };

二叉搜索树与双向链表_牛客题霸_牛客网

class Solution { public: void InOrderConvert(TreeNode* cur, TreeNode*& prev) { if(cur == nullptr) return; InOrderConvert(cur->left, prev); // cur中序 // 当前节点的左,指向前一个节点 cur->left = prev; // 前一个节点的右,指向当前节点 if (prev) prev->right = cur; prev = cur; InOrderConvert(cur->right, prev); } TreeNode* Convert(TreeNode* pRootOfTree) { TreeNode* prev = nullptr; InOrderConvert(pRootOfTree, prev); TreeNode* head = pRootOfTree; while (head && head->left) { head = head->left; } return head; } };

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)

class Solution { public: TreeNode* _buildTree(vector<int>& preorder, vector<int>& inorder, int& prei, int inbegin, int inend) { if (inbegin > inend) return nullptr; TreeNode* root = new TreeNode(preorder[prei++]); //分割中序左右子区间 int rooti = inbegin; while (rooti <= inend) { if (inorder[rooti] == root->val) break; else rooti++; } //[inbegin,rooti-1],rooti,[rooti+1, inend] root->left = _buildTree(preorder, inorder, prei, inbegin, rooti-1); root->right = _buildTree(preorder, inorder, prei, rooti+1, inend); return root; } TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { int i = 0; TreeNode* root = _buildTree(preorder, inorder, i, 0, inorder.size()-1); return root; } };

144. 二叉树的前序遍历 - 力扣(LeetCode)

class Solution { public: vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*> s; vector<int> v; TreeNode* cur = root; while(cur || !s.empty()) { //1、访问左路节点,左路节点入栈 while (cur) { v.push_back(cur->val); s.push(cur); cur = cur->left; } //2、依次访问左路节点的右子树 TreeNode* top = s.top(); s.pop(); //访问左路节点的右子树 --子问题 cur = top->right; } return v; } };

94. 二叉树的中序遍历 - 力扣(LeetCode)

class Solution { public: vector<int> inorderTraversal(TreeNode* root) { stack<TreeNode*> s; vector<int> v; TreeNode* cur = root; while(cur || !s.empty()) { //1、访问左路节点,左路节点入栈 while (cur) { s.push(cur); cur = cur->left; } //2、依次访问左路节点的右子树 TreeNode* top = s.top(); s.pop(); // 栈里取到一个节点时,表示它的左子树访问完毕 v.push_back(top->val); //访问左路节点的右子树 --子问题 cur = top->right; } return v; } };

145. 二叉树的后序遍历 - 力扣(LeetCode)

class Solution { public: vector<int> postorderTraversal(TreeNode* root) { stack<TreeNode*> s; vector<int> v; TreeNode* cur = root; TreeNode* prev = nullptr; while(cur || !s.empty()) { //1、访问左路节点,左路节点入栈 while (cur) { s.push(cur); cur = cur->left; } //2、依次访问左路节点的右子树 TreeNode* top = s.top(); // 栈里面top,代表top的左子树已经访问完了 //1. 当前节点的右子树为空,则访问当前节点 //右子树不为空,上一个访问的节点是右子树的根,代表右子树访问过了 //2. 右子树不为空,子问题访问右子树 if (top->right == nullptr || top->right == prev) { v.push_back(top->val); s.pop(); prev = top; } else { //访问左路节点的右子树 --子问题 cur = top->right; } } return v; } };

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1169406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PW6606芯片5V,9V,12V,15V,20V的PD快充协议诱骗芯片

关键词:快充协议诱骗芯片 型号:PW6606 一、概述 PW6606 是一款高度集成的 USB 电源传输接收端(Sink)控制器芯片,专为从 PD/QC 适配器智能获取所需电压而设计。该芯片支持通过外部电阻灵活设定诱骗输出电压,可选 …

C4D 建模 | 大屏设计 | 交互设计:兰亭妙微 UI 设计,让智慧园区管理 “可视可控”

当传统园区还在依赖人工巡检、数据报表堆砌时&#xff0c;兰亭妙微 UI 设计已经用 C4D 建模、大屏可视化与智能交互的组合拳&#xff0c;为智慧园区打造出 “数字孪生” 管理新范式&#xff0c;让园区的每一处细节都能在大屏上 “可视可控”。随着经济全球化与产业升级的加速&a…

上海GEO优化公司哪家专业(技术实力对比/服务案例/选择标准) - 品牌排行榜

核心结论速看 根据2025年上海GEO(生成式引擎优化)市场的技术落地能力、效果可量化性、服务完整性及企业适配度四大维度评测(点击查看详细评选方法论),为不同需求企业提供精准选择建议: 全场景首选(重视技术深度与转化实…

2026一站式AI智能写作软件推荐:办公写作、润色校对、会议纪要、公文写作 - 深度智识库

随着数字化办公进入深水区,党政机关、事业单位及央国企的文档处理工作正迎来效率与质量的双重升级。2026年伊始,智能写作、润色校对、会议纪要生成等AI辅助工具已成为提升组织运作效能的关键一环。在众多解决方案中,…

centos7如何安装mysql8.0.44及相关配置

yum --version #查看下载工具版本 yum search mysql #搜索软件 如报错&#xff1a;1.网络不可达&#xff0c;检测网络是否通畅 替换镜像源 替换镜像源&#xff1a; 备份原有yum源配置文件&#xff1a; # 创建备份目录 mkdir -p /etc/yum.repos.d/bak # 移动原有 repo 文件…

好写作AI|学霸更牛,学渣逆袭?揭秘AI论文辅助的“马太效应”真相

宿舍楼里同时传来两种哀嚎&#xff1a; 学霸&#xff1a;“这破AI&#xff0c;给我的建议太基础了&#xff01;” 学渣&#xff1a;“这破AI&#xff0c;根本看不懂它在说什么&#xff01;” 同一个好写作AI&#xff0c;为何在不同人手里&#xff0c;效果差出了银河系&#xff…

东北学历提升好去处:2026年口碑机构精选,专升本报名/国家开放大学招生/学历提升/自考培训,学历提升学校推荐榜单 - 品牌推荐师

随着社会对人才学历要求的持续提升,东北地区职场人对于高效、可靠的学历提升机构需求日益增长。为帮助学员精准选择适配机构,本评测基于市场调研数据、资质认证信息及学员真实反馈,对东北地区主流学历提升机构进行横…

linux数据库备份shell及定时任务crontab时间格式

简单定时任务shell脚本内容&#xff1a;#!/bin/bash# MySQL数据库备份脚本# 基础配置信息db_user"root"db_password"04551Jhh"db_name"simple_shop"keep_days7backup_dir"/opt/backups"# 备份文件名为时间戳&#xff08;修正了命令替换…

好写作AI|你的大脑需要“操作系统升级”:AI如何让你学会“思考自己的思考”

改完论文第十稿&#xff0c;你突然意识到&#xff1a;“等等&#xff0c;我之前为什么要那样写&#xff1f;” 然后陷入更深的困惑——“那我到底该怎么思考才对&#xff1f;” 这种感觉就像驾驶一辆没有仪表盘的车&#xff1a;你知道自己在开&#xff0c;但不知道速度多少、油…

好写作AI|没人明说的“学术潜规则”,正在被AI悄悄翻译给你

导师看完你的初稿&#xff0c;叹气道&#xff1a;“你这写得…不像学术论文。” 你连夜重读文献&#xff0c;字都认识&#xff0c;道理也懂。但到底什么叫“像”&#xff1f;那个说不清道不明的“学术感”&#xff0c;到底藏在哪里&#xff1f;每个学术新手都经历过这种“神秘的…

如何让大模型真正“入场”干活?7城联动,获取AI落地的一线实战解法

“它很聪明&#xff0c;能回答各种通用问题&#xff0c;但一遇到店铺具体的促销规则、售后流程&#xff0c;就开始‘胡说八道’。” 这是三个月前&#xff0c;某电商平台技术负责人陈工的真实经历。团队反复调教通用大模型做客服&#xff0c;却始终无法解决业务中的实际问题。 …

2026实验室电加热炉厂家权威推荐榜单:导热油电加热炉/工业电加热炉/电加热炉/管式加热炉/管式电加热炉源头厂家精选。 - 品牌推荐官

在现代材料科学、化学合成、新能源研发等前沿领域,实验室电加热炉作为实现精准加热与高温模拟的核心设备,其性能直接决定了实验数据的可靠性与可重复性。行业数据显示,2024年国内实验室电加热炉市场规模已超过12亿元…

德永信集团:以“专数智”赋能注册代办与财税服务,助力企业数字化转型

在数字化转型浪潮席卷各行业的当下&#xff0c;中小企业对高效、安全、透明的财税服务需求日益迫切。作为深耕注册公司代办与财税服务领域21年的领军企业&#xff0c;德永信集团凭借深厚的专业底蕴与技术创新&#xff0c;携手企业微信打造数字化服务生态&#xff0c;以“专业服…

专业的采购管理系统推荐:智能寻源+供应商协同(千企验证) - 品牌排行榜

2024年中国企业数字化采购市场规模突破5800亿元,超过68%的中大型企业将采购数字化列为核心战略。但传统采购模式下,供应商管理混乱、寻源效率低下、协同成本高企等问题持续困扰企业。本文基于1000+企业实践数据,深度…

2026年振动筛实力厂家推荐榜:新乡华恒机械,矿用/不锈钢/直线/超声波/轻型/长方形振动筛全系供应 - 品牌推荐官

高效筛选、精密筛分是现代工业生产的关键环节,根据应用场景选择合适的振动筛型号和供应商,将直接影响整体生产效率和产品质量。新乡市华恒机械设备有限公司凭借近二十年的专业经验和技术积累,其振动筛产品广泛应用于…

CNAS软件检测实验室认可,一次完整的方法验证过程是怎样的?

在软件检测实验室认可工作中&#xff0c; 方法的选择和验证是必须要做好的一部分工作。CNAS认可文件中对该方面的要求主要有三点&#xff1a;使用适当的方法和程序开展所有实验室活动&#xff1b;确保使用最新有效版本的方法在引入方法前&#xff0c;验证能够正确地运用该方法。…

毕业设计定制作品---【芳心科技】F. 智能声波美肤调控仪

实物效果图&#xff1a;实现功能&#xff1a;1. 采用 STM32 单片机作为控制核心。 2. 采用 MOSFET 开关管控制电极片的频率。 3. 通过电开关改变电极片的振幅。 4. 采用 LCD 显示屏进行显示。 5. 声波输出中心频率&#xff1a;1MHz土10%。6. 输出声功率&#xff1a;0.5~1W可调。…

毕业设计定制作品---【芳心科技】F. 中频理疗仪PCB

实物效果图&#xff1a;实现功能&#xff1a;要求1&#xff1a;题目涉及医疗装置&#xff0c;故&#xff0c;在形成设计方案之前必须认真从严查证文献资料&#xff0c;对装置所涉及的&#xff0c;如&#xff1a;频率、功率、电压、电流、阻抗匹配、输出时长、调制方式、刺激/激…

2026年 微型热电制冷器厂家推荐排行榜:TEC制冷模组、半导体制冷片、无振动环保制冷技术深度解析与选购指南 - 品牌企业推荐师(官方)

2026年微型热电制冷器厂家推荐排行榜:TEC制冷模组、半导体制冷片、无振动环保制冷技术深度解析与选购指南 随着精密电子、生物医疗、光通信及高端消费电子等领域的飞速发展,对温度控制技术提出了前所未有的高要求。传…

强烈安利8个AI论文平台,自考学生轻松搞定毕业论文!

强烈安利8个AI论文平台&#xff0c;自考学生轻松搞定毕业论文&#xff01; AI 工具如何助力自考学生轻松完成论文 在自考学习过程中&#xff0c;毕业论文往往是许多学生最头疼的一环。面对繁重的写作任务和复杂的格式要求&#xff0c;很多学生感到无从下手&#xff0c;甚至因此…