首页/新闻资讯/正文详情

数据结构:C语言实现堆与链式二叉树全解析

发布时间:2026/11/5 6:47:32 来源:云帆数科 栏目:资讯中心
数据结构:C语言实现堆与链式二叉树全解析
文章目录前言堆堆的概念堆的实现向上调整算法ADjustUp向下调整算法ADjustDownTOP-K问题链式二叉树概念链式二叉树的实现函数递归栈帧图层序遍历前言二叉树是树形结构的基础也是面试高频考点。本文使用C语言实现二叉树包含堆是基于数组实现的完全二叉树属于顺序结构二叉树本文实现链式二叉树。本文包含1.堆大顶堆、堆初始化、插入、删除、堆排序、TOPK问题2. 链式二叉树结点定义、前/中/后序递归遍历、队列实现层序遍历3. 完整可运行C代码堆堆的概念堆本质是完全二叉树但是它不用指针链式存储而是用数组顺序存储。堆满足一个核心性质父子结点之间有大小关系分为两种大堆任意一个父结点的值 ≥ 左右孩子结点的值堆顶数组第一个元素是整个堆里最大值小堆任意一个父结点的值 ≤ 左右孩子结点的值堆顶是整个堆里最小值堆的实现向上调整算法ADjustUp1.先将元素插⼊到堆的末尾,即最后⼀个孩⼦之后2.插⼊之后如果堆的性质遭到破坏将新插⼊结点顺着其双双亲往上调整到合适位置即可向下调整算法ADjustDown1.将堆顶元素与堆中最后⼀个元素进⾏交换2.删除堆中最后⼀个元素3.将堆顶元素向下调整到满⾜堆特性为止TOP-K问题1.⽤数据集合中前K个元素来建堆求前k个最⼤的元素则建⼩堆求前k个最⼩的元素则建⼤堆2.⽤剩余的N-K个元素依次与堆顶元素来⽐较不满⾜则替换堆顶元素将剩余N-K个元素依次与堆顶元素⽐完之后堆中剩余的K个元素就是所求的前K个最⼩或者最⼤的元素链式二叉树概念链式二叉树就是用指针链接的方式存储二叉树不再像堆那样用数组顺序存储。每一个结点独立开辟内存结点内部包含三部分1.数据域存放结点的数据2. 左指针指向左孩子结点3. 右指针指向右孩子结点链式二叉树的实现函数递归栈帧图层序遍历

相关推荐

Springcloud校园活动签到系统29522-计算机毕业设计、课程设计
Springcloud校园活动签到系统29522-计算机毕业设计、课程设计

第一章 绪论 1.1 研究背景和意义 随着高校活动越来越多样化,校内各种活动的组织和管理也变得越来越繁杂。传统的活动签到方式大多采用纸质记录、人工统计的方式进行信息的收集,由于其采集信息的过程比较繁杂,且时效性以及准确性都受到了较大… · 2026/11/5 6:47:32

Vue3+Cesium Camera 相机与动画操作大全|定位、飞行、环绕、视角锁定、动画取消
Vue3+Cesium Camera 相机与动画操作大全|定位、飞行、环绕、视角锁定、动画取消

前言 Cesium 的 Camera 控制我们看到的三维世界,相机有两套常用操作: 即时跳转:瞬间切换视角,无动画动画飞行:flyTo / flyBoundingSphere,带平滑过渡动画,业务最常用 还有 lookAt 锁定关注点、o… · 2026/11/5 6:47:32

闭包之循环中捕获正确的值
闭包之循环中捕获正确的值

先来看下面这几段 JavaScript 代码&#xff1a;它们执行后分别会输出什么&#xff1f;其中哪些能正常输出 0、1、2&#xff1f;// 1、var 陷阱 for (var i 0; i < 3; i) {setTimeout(() > {console.log(i);}, 100); }// 2、 IIFE 闭包 for (var i 0; i < 3; i) {(f… · 2026/11/5 6:46:32

ADS122U04+PIC18F46K42:高精度PT1000测温模块设计与实现
ADS122U04+PIC18F46K42:高精度PT1000测温模块设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:36:44

基于ADS122U04IPWR与STM32F765ZI的工业及HVAC高精度温度测量方案
基于ADS122U04IPWR与STM32F765ZI的工业及HVAC高精度温度测量方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:36:44

ADS122U04+PIC32MZ:HVAC高精度温度采集系统设计与实现
ADS122U04+PIC32MZ:HVAC高精度温度采集系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:36:44

ADS122U04IPWR+STM32F031C6工业温度测量方案解析
ADS122U04IPWR+STM32F031C6工业温度测量方案解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:36:44

基于ADS122U04与PIC32MZ的高精度温度采集系统设计
基于ADS122U04与PIC32MZ的高精度温度采集系统设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:36:44

ADS122U04与STM32F410RB工业温度采集方案:UART接口ADC实战详解
ADS122U04与STM32F410RB工业温度采集方案:UART接口ADC实战详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时&#xff0c;Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门&#xff0c;我先说个结论&#xff1a;这事真不难&#xff0c;难的是资料太散、路线太多&#xff0c;今天这个框架明天那个工具&#xff0c;新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师&#xff0c;我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码&#xff0c;在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码