当前位置: 首页 > article >正文

二叉树中序线索化及中序线索二叉树找前驱/后继

#include stdio.h #include stdlib.h // 线索二叉树结点 typedef struct ThreadNode { int data; struct ThreadNode *lchild, *rchild; int ltag, rtag; } ThreadNode, *ThreadTree; ThreadNode *pre NULL; void create(ThreadTree T) { T (ThreadNode *)malloc(sizeof(ThreadNode)); T-data 1; T-ltag T-rtag 0; ThreadNode *T2 (ThreadNode *)malloc(sizeof(ThreadNode)); T2-data 2; T2-ltag T2-rtag 0; T-lchild T2; ThreadNode *T3 (ThreadNode *)malloc(sizeof(ThreadNode)); T3-data 3; T3-ltag T3-rtag 0; T-rchild T3; ThreadNode *T4 (ThreadNode *)malloc(sizeof(ThreadNode)); T4-data 4; T4-lchild T4-rchild NULL; T4-ltag T4-rtag 0; T2-lchild T4; ThreadNode *T5 (ThreadNode *)malloc(sizeof(ThreadNode)); T5-data 5; T5-lchild T5-rchild NULL; T5-ltag T5-rtag 0; T2-rchild T5; ThreadNode *T6 (ThreadNode *)malloc(sizeof(ThreadNode)); T6-data 6; T6-lchild T6-rchild NULL; T6-ltag T6-rtag 0; T3-lchild T6; ThreadNode *T7 (ThreadNode *)malloc(sizeof(ThreadNode)); T7-data 7; T7-lchild T7-rchild NULL; T7-ltag T7-rtag 0; T3-rchild T7; } void visit(ThreadNode *q) { if (q-lchild NULL) {//当前结点左子树为空建立前驱线索 q-lchild pre; q-ltag 1; } if (pre ! NULL pre-rchild NULL) {//前驱结点右子树为空建立前驱结点的后继线索 pre-rchild q; pre-rtag 1; } pre q; } void InThread(ThreadTree T) { if (T ! NULL) { InThread(T-lchild); visit(T); InThread(T-rchild); } } //中序线索化二叉树T void createInThread(ThreadTree T) { pre NULL; if (T ! NULL) { InThread(T); if (pre-rchild NULL) { pre-rtag 1; // 最后一个节点后继为空标记为线索 } } } //中序线索二叉树找后继 //找到以p为根的子树中第一个被中序遍历的结点 ThreadNode *Firstnode(ThreadNode *p) { while (p-ltag 0) p p-lchild;//循环找到最左下的结点 return p; } //在中序线索二叉树中找到结点p的后继结点 ThreadNode *Nextnode(ThreadNode *p) { if (p-rtag 1) return p-rchild; // 有线索直接找后继 else return Firstnode(p-rchild); // 有右孩子找右子树最左下的节点 } //对中序线索二叉树进行中序遍历利用线索实现的非递归算法) void InOrder(ThreadTree T) { if (T NULL) return; for (ThreadNode *p Firstnode(T); p ! NULL; p Nextnode(p)) printf(%d , p-data); } //中序线索找前驱 //找到以p为根的子树中最后一个被中序遍历的结点 ThreadNode *Lastnode(ThreadNode *p){ while (p-rtag 0) p p-rchild;//循环找到最右下结点 return p; } //在中序线索二叉树中找到p结点的前驱结点 ThreadNode *Prenode(ThreadNode *p){ if(p-ltag 1) return p-lchild;//有线索直接找前驱 else return Lastnode(p-lchild);//有左孩子找左子树最右下的结点 } //对中序线索二叉树进行逆序的中序遍历 void RevInorder(ThreadNode *T){ for(ThreadNode *p Lastnode(T);p!NULL;p Prenode(p)) printf(%d ,p-data); } int main() { ThreadTree T NULL; create(T); createInThread(T); InOrder(T); RevInorder(T); return 0; }

相关文章:

二叉树中序线索化及中序线索二叉树找前驱/后继

#include <stdio.h> #include <stdlib.h>// 线索二叉树结点 typedef struct ThreadNode {int data;struct ThreadNode *lchild, *rchild;int ltag, rtag; } ThreadNode, *ThreadTree;ThreadNode *pre NULL;void create(ThreadTree &T) {T (ThreadNode *)mal…...

Agent文件系统检索核心:Grep和Glob工具

在Harness的定义中&#xff0c;Agent的文件系统是核心之一 在文件系统的帮助下&#xff0c;Agent表现出来的搜索能力是非常出色的&#xff0c;用户和开发者不定义搜索路径&#xff0c;只提供输入驱动&#xff0c;而具体的搜索路径是由Agent根据每一次的工具调用动态决定的 Ag…...

DeepSeek‑V4 预览版:1M 上下文暴打西方闭源模型阵营,GPT/Gemini 这次真有压力了

DeepSeek‑V4 预览版发布4 月 24 日&#xff0c;DeepSeek 正式发布新一代系列模型 DeepSeek‑V4 预览版&#xff0c;并同步开放 API 与开源权重&#xff0c;主打「1M 超长上下文 顶级推理 高性价比」。 这一代模型分为 DeepSeek‑V4‑Pro 和 DeepSeek‑V4‑Flash 两个版本&am…...

microeco:突破微生物功能预测精度瓶颈的R包创新方案

microeco&#xff1a;突破微生物功能预测精度瓶颈的R包创新方案 【免费下载链接】microeco An R package for downstream data analysis of microbiome omics data 项目地址: https://gitcode.com/gh_mirrors/mi/microeco microeco是一个专为微生物组学数据下游分析设计…...

机器学习交叉验证优化7大实战技巧

1. 交叉验证优化入门&#xff1a;从基础到进阶交叉验证是机器学习模型评估的黄金标准&#xff0c;但很多从业者只停留在基础用法。我在实际项目中发现&#xff0c;合理优化交叉验证流程可以使模型评估效率提升3-5倍&#xff0c;同时获得更可靠的性能指标。让我们从一个基础示例…...

Delphi7 编译EXE报毒 Virus/Induc.a?一招根治(附详细步骤)

在使用 Delphi7 开发程序时&#xff0c;很多开发者会遇到一个棘手问题&#xff1a;编译生成的 EXE 运行时&#xff0c;被火绒、360 等杀毒软件拦截&#xff0c;提示“发现风险 Virus/Induc.a”&#xff0c;即便将 EXE 加入白名单&#xff0c;仍会拦截程序修改注册表、内存加载等…...

微信聊天记录导出终极指南:无需越狱,永久保存珍贵对话

微信聊天记录导出终极指南&#xff1a;无需越狱&#xff0c;永久保存珍贵对话 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 还在为微信聊天记录丢失而烦恼吗&#xff1…...

光储并网Simulink仿真模型与直流微电网研究

光储并网simulink仿真模型&#xff0c;直流微电网。 光伏系统采用扰动观察法是实现mppt控制&#xff0c;储能可由单独蓄电池构成&#xff0c;也可由蓄电池和超级电容构成的混合储能系统&#xff0c;并采用lpf进行功率分配。 并网采用pq控制实现稳定功率输送。 附对应wen献光伏和…...

创采德航--采购数智化转型专家

大连创采德航信息技术有限公司是一家专注采购数智化领域的专业咨询服务机构。公司始终秉承 "诚信、严谨、专业、创新" 的服务理念&#xff0c;深度聚焦企业采购管理升级与数字化变革&#xff0c;致力于为客户提供体系化、专业化、智能化的采购数智化转型整体解决方案…...

Unity WebCamTexture实战:从权限申请到区域截图,一个完整AR证件照项目的避坑实录

Unity WebCamTexture实战&#xff1a;从权限申请到区域截图&#xff0c;一个完整AR证件照项目的避坑实录 在移动应用开发中&#xff0c;AR证件照功能正成为教育、社交和电商平台的热门需求。想象一下&#xff0c;用户只需打开手机摄像头&#xff0c;就能自动生成符合标准的证件…...

XGBoost多线程优化实战与性能调优指南

1. 理解XGBoost多线程优化的核心价值XGBoost作为机器学习竞赛中的常胜将军&#xff0c;其性能优势很大程度上来自于对多核CPU的充分利用。但在实际项目中&#xff0c;很多开发者只是简单设置n_jobs-1就认为万事大吉&#xff0c;这往往无法发挥硬件的最佳性能。我在金融风控领域…...

机器学习重采样方法:原理、实现与工程实践

1. 理解重采样方法的核心价值在机器学习实践中&#xff0c;我们经常面临一个根本性矛盾&#xff1a;模型需要在训练数据上学习规律&#xff0c;但最终要在未见过的数据上表现良好。这就引出了机器学习中最关键的挑战之一——如何准确评估模型在真实场景中的表现&#xff1f;重采…...

从PLC抓包到JSON Schema自动生成:VSCode 2026工业协议插件的7大不可替代能力(附Gitee私有仓迁移教程)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从PLC抓包到JSON Schema自动生成&#xff1a;VSCode 2026工业协议插件的演进逻辑 工业现场协议解析长期面临“协议黑盒化”困境&#xff1a;Modbus TCP、S7Comm、EtherNet/IP 等流量虽可捕获&#xff0…...

【Docker AI Toolkit 2026避坑红宝书】:20年DevOps专家亲测的7大高频崩溃场景与秒级修复清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker AI Toolkit 2026核心架构演进与避坑认知升级 Docker AI Toolkit 2026 不再是简单封装 PyTorch/TensorFlow 的 CLI 工具集&#xff0c;而是基于 eBPF 驱动的容器原生 AI 编排层&#xff0c;深度融…...

如何3分钟解锁QQ音乐加密文件:终极免费工具使用指南

如何3分钟解锁QQ音乐加密文件&#xff1a;终极免费工具使用指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换…...

【深度架构解析】高并发 AI 视频管理平台:兼容 GB28181/RTSP,支持 X86/ARM+GPU/NPU 异构部署与源码交付

前言&#xff1a;安防碎片化时代的破局之道 在传统的安防集成项目中&#xff0c;架构师常面临三大痛点&#xff1a;硬件生态割裂&#xff08;不同芯片厂商驱动不通&#xff09;、协议黑盒化&#xff08;GB28181接入复杂&#xff09;、以及开发周期冗长。为了实现一个稳健的 AI…...

重磅!万众瞩目的DeepSeek V4十分钟前开源了,曾经的王又回来了!

就在刚刚&#xff0c;DeepSeek 正式发布了全新一代大模型 DeepSeek-V4 预览版&#xff0c;并宣布同步开源。这一次&#xff0c;DeepSeek喊出了一个响亮的口号&#xff1a;迈入百万上下文普惠时代。从今天起&#xff0c;100万的超长上下文将成为DeepSeek所有官方服务的标配。两个…...

轻松解锁网易云NCM音乐文件:ncmdumpGUI图形化转换工具完全攻略

轻松解锁网易云NCM音乐文件&#xff1a;ncmdumpGUI图形化转换工具完全攻略 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐的NCM格式文件无法…...

HEIF Utility:让Windows用户轻松驾驭苹果HEIF图片格式的实用指南

HEIF Utility&#xff1a;让Windows用户轻松驾驭苹果HEIF图片格式的实用指南 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 在苹果设备全面采用HEIF格式的时代&…...

5个关键策略让MacBook电池寿命延长2倍:AlDente深度使用指南

5个关键策略让MacBook电池寿命延长2倍&#xff1a;AlDente深度使用指南 【免费下载链接】AlDente-Battery_Care_and_Monitoring Menubar Tool to set Charge Limits and Prolong Battery Lifespan 项目地址: https://gitcode.com/gh_mirrors/al/AlDente-Battery_Care_and_Mon…...

如何快速为PDF添加智能书签?pdfdir终极指南

如何快速为PDF添加智能书签&#xff1f;pdfdir终极指南 【免费下载链接】pdfdir PDF导航&#xff08;大纲/目录&#xff09;添加工具 项目地址: https://gitcode.com/gh_mirrors/pd/pdfdir 你是否曾经在阅读长篇PDF文档时迷失在密密麻麻的页面中&#xff1f;是否因为找不…...

技术突破:Pentaho Kettle如何实现异构数据源高效集成与ETL处理

技术突破&#xff1a;Pentaho Kettle如何实现异构数据源高效集成与ETL处理 【免费下载链接】pentaho-kettle Pentaho Data Integration ( ETL ) a.k.a Kettle 项目地址: https://gitcode.com/gh_mirrors/pe/pentaho-kettle Pentaho Kettle&#xff08;现称Pentaho Data …...

安卓虚拟摄像头完整指南:3分钟实现摄像头画面替换

安卓虚拟摄像头完整指南&#xff1a;3分钟实现摄像头画面替换 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam 想在安卓设备上使用自定义视频或图片作为摄像头输入吗&#xff1f;android_v…...

VSCode 2026高内存场景生存指南,专治多根工作区+Docker Compose+Jupyter Notebook三重压测:实测7类组合负载下的最优GC阈值配置表

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;VSCode 2026内存治理的底层逻辑与演进变革 VSCode 2026 版本重构了其核心内存生命周期管理模型&#xff0c;将传统的“进程级内存池后台垃圾回收”范式&#xff0c;升级为基于 WebAssembly 边界隔离与实…...

PyAutoGUI 第3章 弹窗交互功能教程(GUI交互,核心3)

PyAutoGUI 弹窗交互功能教程&#xff08;GUI交互&#xff0c;核心3&#xff09; 说明&#xff1a;本教程为 PyAutoGUI 核心操作专项教程&#xff0c;聚焦 GUI 弹窗交互功能&#xff0c;涵盖各类弹窗的使用方法、参数配置、返回值判断&#xff0c;结合实操代码和场景示例&#x…...

如何用Seraphine实现终极英雄联盟BP自动化:告别手忙脚乱的对局准备

如何用Seraphine实现终极英雄联盟BP自动化&#xff1a;告别手忙脚乱的对局准备 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在排位赛中因为错过对局接受而懊恼不已&#xff1f;是否在BP阶段面对眼…...

别再搞混了!C++里printf和setprecision控制小数位,到底有啥区别?

别再搞混了&#xff01;C里printf和setprecision控制小数位&#xff0c;到底有啥区别&#xff1f; 在财务系统开发中&#xff0c;一个工程师因为混淆了printf和setprecision的精度控制逻辑&#xff0c;导致公司报表出现数百万的误差。这个真实案例揭示了C数值格式化中一个关键但…...

Vue3项目实战:5分钟给你的后台管理系统加上动态实时水印(支持暗黑模式)

Vue3动态水印实战&#xff1a;5分钟打造智能防泄密系统 在数字化办公时代&#xff0c;敏感数据保护已成为企业管理系统的刚需。某金融科技公司的前端团队曾发现&#xff0c;内部系统截图在外泄后无法追踪来源&#xff0c;导致三个月内发生两次商业信息泄露事件。而引入动态水印…...

机器学习评估指标全解析:从原理到Python实战

1. 机器学习算法评估指标全景解读在数据科学项目中&#xff0c;选择合适的评估指标往往比模型选择本身更重要。想象一下这样的场景&#xff1a;你花费两周时间优化了一个准确率达到95%的欺诈检测模型&#xff0c;上线后却发现漏掉了80%的真实欺诈案例——这就是错误选择评估指标…...

AI结对编程实战:双智能体架构如何解决代码生成幻觉问题

1. 项目概述&#xff1a;当AI开始结对编程如果你和我一样&#xff0c;每天都要和代码打交道&#xff0c;那你肯定对“AI编程助手”这个概念不陌生。从最初的代码补全&#xff0c;到后来的对话式编程&#xff0c;AI确实帮我们省了不少敲键盘的功夫。但不知道你有没有遇到过这种情…...