政府网站谁来做/个人网站设计欣赏

政府网站谁来做,个人网站设计欣赏,wordpress换链接,长沙人才网官网入口本篇博客给大家带来的是用C语言来实现堆链式结构和二叉树的实现! 🐟🐟文章专栏:数据结构 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享! 今日思想&#xff…

本篇博客给大家带来的是用C++语言来实现堆链式结构和二叉树的实现!

🐟🐟文章专栏:数据结构

🚀🚀若有问题评论区下讨论,我会及时回答

❤❤欢迎大家点赞、收藏、分享!

今日思想:你现在的懒惰将来你会买单的!

 上篇文章我们实现了二叉树的堆的顺序结构的实现具体内容请看这两篇文章:【C++】树和二叉树的实现(上)-CSDN博客

【C++】树和二叉树的实现(下)-CSDN博客

接下来我们实现二叉树堆的链式结构 !

一、二叉树堆的链式结构的定义

        顺序结构实现堆的底层是数组,那么链式结构的底层是链表。我们先定义链表的结构体。

代码实例:

//Tree.h
//定义链式结构二叉树
typedef char BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;

二、二叉树堆的链式结构的实现方法

        二叉树堆的链式结构的实现方法有: 前序遍历、中序遍历、后序遍历、二叉树结点个数、二叉树叶子结点个数、二叉树第k层结点个数、二叉树查找值为x的结点、二叉树的销毁、层序遍历、判断二叉树是否为完成二叉树。

注意:这些方法的实现大部分都是递归的思想,即使不知道递归也没事下面我会细说。

1、前序遍历

        前序遍历的规则:先遍历根,再遍历左子树、最后遍历右子树。

遍历顺序:A->B->D->NULL->NULL->NULL->C->E->NULL->NULL->F->N->ULL->NULL     

注:大家可以根据遍历顺序来理解前序遍历的规则。

代码实例:

//Tree.h
//前序遍历
void preOrder(BTNode* root);
//Tree.c
//前序遍历-根左右
void preOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}printf("%c ", root->data);preOrder(root->left);preOrder(root->right);
}

 短短的几行代码就完成了前序遍历,让我们看看它是怎么实现的,如图:

          其他的代码实现跟上图的注释一样就不多写了,包括后面实现的中序遍历、后序遍历等。

注:这张图不太清楚大家可以下载,然后在电脑自带的画图上放大就行。

 2、中序遍历

        中序遍历的规则:先遍历左子树,再遍历根结点、最后是右子树。

遍历顺序:NULL->D->NULL->B->NULL->A->NULL->E->NULL->C->NULL->F->NULL 

代码实例:

//Tree.h
//中序遍历
void InOrder(BTNode* root);
//Tree.c
//中序遍历——左根右
void InOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}postOrder(root->left);printf("%c ", root->data);postOrder(root->right);
}

3、后序遍历

        后序遍历的规则:先遍历左子树,再遍历右子树、最后遍历根结点。

遍历顺序:NULL->NULL->D->NULL->B->NULL->NULL->E->NULL->NULL->F->C->A 

代码实例:

//Tree.h
//后序遍历
void postOrder(BTNode* root);
//Tree.c
//后序遍历——左右根
void postOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}postOrder(root->left);postOrder(root->right);printf("%c ", root->data);
}

4、二叉树结点个数

        二叉树结点个数=根结点+左子树的结点个数+右子树结点个数

注:只有一个根结点。

代码实例:

//Tree.h
//二叉树结点个数
int BinaryTreesize(BTNode* root);
//Tree.c
//二叉树结点个数
int BinaryTreesize(BTNode* root)
{if (root == NULL){return 0;}return 1 + BinaryTreesize(root->left) + BinaryTreesize(root->right);
}

 由于时间的原因后面的实现方法放到下篇文章!!

完!!

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

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

相关文章

Devops之AWS:如何安装AWS CLI

AWS 命令行界面(AWS CLI)是一种开源工具,让我们能够使用命令行 Shell 中的命令与 AWS 服务进行交互。 安装步骤: 下载并运行AWS CLI的MSI安装程序: 点击如下的链接,即可下载MSI安装程序: htt…

PH2D数据集: 用人类演示数据提升人形机器人操作能力,助力跨实体学习

2025-03-18, 由加州大学圣地亚哥分校, 卡内基梅隆大学, 华盛顿大学, 麻省理工学院等机构联合收集了PH2D数据集。该数据集包含26824个任务导向的人类演示,采用消费者级VR设备收集,提供了准确的3D手部关键点姿态和语言注释。数据集覆盖了多种操作任务、不同…

Matlab 基于专家pid控制的时滞系统

1、内容简介 Matlab 185-基于专家pid控制的时滞系统 可以交流、咨询、答疑 2、内容说明 略 在处理时滞系统(Time Delay Systems)时,使用传统的PID控制可能会面临挑战,因为时滞会导致系统的不稳定或性能下降。专家PID控制通过结…

E902基于bash与VCS的仿真环境建立

网上看见很多E902仿真的文章,但用到的编译器是类似于这种Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120,而我按照相应的步骤与对应的编译器,仿真总会报错。后面将编译器换成riscv64-elf-x86_64-20210512,反而成功了。现在开…

SpringSecurity配置(自定义认证过滤器)

文末有本篇文章的项目源码文件可供下载学习 在这个案例中,我们已经实现了自定义登录URI的操作,登录成功之后,我们再次访问后端中的API的时候要在请求头中携带token,此时的token是jwt字符串,我们需要将该jwt字符串进行解析,查看解析后的User对象是否处于登录状态.登录状态下,将…

《UNIX网络编程卷1:套接字联网API》第1章 简介

《UNIX网络编程卷1:套接字联网API》第1章 简介 1.1 网络编程的核心价值与挑战 网络编程是实现跨设备通信的技术基础,其核心目标是通过协议栈实现数据的可靠传输与高效交换。在嵌入式系统、云计算、物联网等领域,网络编程能力直接决定了系统的…

D-Wave专用量子计算机登顶Science 率先展示在真实场景中的量子优势(内附下载)

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨浪味仙 行业动向:4200字丨16分钟阅读 摘要:加拿大专用量子计算机公司 D-Wave 在 Science 期刊发表了论文,题为《Beyond-Classical Compu…

jmeter将返回的数据写入csv文件

举例说明,我需要接口返回体中的exampleid与todoid的数据信息(使用边界提取器先将其提取),并将其写入csv文件进行保存 使用后置处理器BeanShell 脚本实例如下 import java.io.*;// 设置要写入的文件路径 String filePath "…

Linux下Redis哨兵集群模式搭建(1主2从+3哨兵)

Linux下Redis哨兵集群模式搭建(1主2从3哨兵) 一、Redis哨兵模式搭建 1.安装包下载 链接: https://pan.baidu.com/s/1_n2rCMi5MHX-mVkkyMo4LA 提取码: gbra 2.新建redis目录 mkdir -p /app/redis3.解压到/app/redis目录下 tar -zxvf redis-6.2.16.ta…

20250319在荣品的PRO-RK3566开发板的buildroot系统下使用集成的QT应用调试串口UART3

stty -F /dev/ttyS3 115200 -echo cat /dev/ttyS3 & echo serialdata > /dev/ttyS3 20250319在荣品的PRO-RK3566开发板的buildroot系统下使用集成的QT应用调试串口UART3 2025/3/19 14:17 缘起:在荣品的PRO-RK3566开发板的buildroot系统下,在命令…

YOLO+OpenCV强强联手:高精度跌倒检测技术实战解析

目录 关于摔倒检测 摔倒检测核心逻辑 摔倒检测:联合多种逻辑判断 原理详细解释 1. 导入必要的库 2. 定义函数和关键点连接关系 3. 筛选有效关键点并计算边界框 4. 计算人体上下半身中心点和角度 5. 绘制关键点和连接线 6. 绘制角度标注和检测跌倒 7. 返回处理后的图…

AI入门7:python三种API方式调用本地Ollama+DeepSeek

回顾 书接上篇:各种方式搭建了本地知识库: AI入门:AI模型管家婆ollama的安装和使用-CSDN博客 AI入门2:本地AI部署,用ollama部署deepseek(私有化部署)-CSDN博客 AI入门3:给本地d…

内网安全-横向移动Kerberos 攻击SPN 扫描WinRMWinRSRDP

1.WinRM&WinRS 条件: 双方开启winrm winrs服务 2008版本以上默认开启,win 7默认关闭 检测使用cs内置端口扫描5985开放情况 进行连接 winrs -r:http://192.168.93.30:5985 -u:administrator -p:Whoami2021 whoami 2.内网-spn shell setspn -T …

YZi Labs 谈对 Plume 的投资:利用区块链创造现实价值的典范项目

3 月 17 日,YZi Labs 宣布投资 RWAfi 赛道项目 Plume,引发市场广泛关注。本轮融资是 Plume 在 去年 5 月和 12 月 连续两轮融资后的第三轮融资,代表着市场资本市场对于 Plume RWAfi 叙事以及其发展潜力的高度认可。 本次融资不仅提升了市场对…

互功率谱 cpsd

互功率谱(Cross-Power Spectral Density, CPSD)是信号处理中用于描述两个信号在频域中相关性的工具。它表示两个信号在不同频率下的功率分布及其相位关系,广泛应用于模态分析、系统辨识和信号匹配等领域。 matlab 实现 MATLAB 提供了 cpsd 函数来计算互功率谱。以下是使用 …

RocketMQ 架构

一、RocketMQ 核心架构概述 ​1. 主要组件 ​Name Server: 集群的「中枢神经」,负责 Topic 元数据管理(如 Topic 分区分布、Broker 节点状态监控)。 ​Broker: 消息存储与流转的核心节点,负责消息的持久化…

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段:觉得自己会的东西不少,但又不知道下一步该干啥。会点C语言,能烧录程序,能点亮LED,玩转按键,搞定串口等等,能用开发板做点小玩意儿,但面对…

olmOCR大模型:支持结构化精准提取复杂PDF文件内容

基于streamlit与olmOCR大模型实现的pdf提取工具 import os import json import subprocess import pandas as pd from pathlib import Path import shutil import time import re import streamlit as st# 创建工作目录 WORKSPACE_DIR "olmocr_workspace" os.maked…

五模型对比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量时间序列预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 光伏功率预测!五模型对比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量时间序列预测(Matlab2023b 多输入单输出) 1.程序已经调试好,替换数据集后,仅运…

SQLMesh 系列教程:Airbnb数据分析项目实战

在本文中,我们将探讨如何利用dbt项目的代码库来实现一个简单的SQLMesh项目。本文的基础是基于Udemy讲师为dbt课程创建的示例项目,可以在这个GitHub repo中获得。这个dbt项目是相对完整的示例,我们将使用它作为模板来演示SQLMesh(下…