二叉树的顺序存储和基本操作实现
写代码:定义顺序存储的二叉树(数组实现,树的结点从数组下标1开始存储)
基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号
利用上述三个函数,实现先/中/后序遍历
写代码:定义顺序存储的二叉树(数组实现,树的结点从数组下标0开始存储)
基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号
利用上述三个函数,实现先/中/后序遍历
1.定义顺序存储的二叉树(数组实现,树的结点从数组下标1开始存储)
基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号
利用上述三个函数,实现先/中/后序遍历
#include <stdio.h>#define MAX_SIZE 100
int tree[MAX_SIZE];
//查找父节点
int findFather(int i)
{if(i<=1 ||i>=MAX_SIZE){//TODOreturn -1;//节点不合法 }return i/2;
}
//查找i的左孩子
int findLeftChild(int i)
{int left=i*2;if(left>=MAX_SIZE){//TODOreturn -1;//节点不合法 }return left;
}
//查找右孩子
int findRightChild(int i)
{int right=2*i+1;if(right>=MAX_SIZE){//TODOreturn -1;}return right;
}
//先序遍历
void preOrderTraversal(int i)
{if(i>=MAX_SIZE ||i>1){//TODOreturn;}printf("%d",tree[i]);//访问根节点preOrderTraversal(findLeftChild(i)) ;//递归遍历左子树preOrderTraversal(findRightChild(i));//递归遍历右子树
}
//中序遍历
void inOrderTraversal(int i)
{if(i>=MAX_SIZE ||i<1){//TODOreturn;}inOrderTraversal(findLeftChild(i));//递归遍历左子树printf("%d",tree[i]);//访问根节点inOrderTraversal(findRightChild(i));//递归访问右子树
}
//后序遍历
void postOrderTraversal(int i)
{if(i>=MAX_SIZE ||i<1){//TODOreturn;}postOrderTraversal(findLeftChild(i));//递归遍历左子树postOrderTraversal(findRightChild(i));//递归遍历右子树printf("%d",tree[i]);//访问根节点
}
2.定义顺序存储的二叉树(数组实现,树的结点从数组下标0开始存储)
基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号
利用上述三个函数,实现先/中/后序遍历
#include <stdio.h>#define MAX_SIZE 100
typedef int ElemType;
typedef ElemType Bitree[MAX_SIZE];int findFather (int i)
{if(i==0){//TODOreturn -1;}return (i-1)/2;
}
int findLeftChild(Bitree t,int i)
{int left=2*i+1;if(left<MAX_SIZE &&t[left] !=0){return left;}return -i;
}
int findRightChild(Bitree t,int i)
{int right =2*i+2;if(right<MAX_SIZE && t[right]) {//TODOreturn right;}return -1;
}
void preOrder(Bitree t,int i)
{if(i==-1){//TODOreturn;}printf("%d",t[i]);preOrder(t,findLeftChild(t,i));preOrder(t,findRightChild(t,i));
}
void inOrder(Bitree t,int i)
{if(i==-1){//TODOreturn;}inOrder(t,findLeftChild(t,i));printf("%d",t[i]);inOrder(t,findRightChild(t,i));
}void postOrder(Bitree t,int i)
{if(i==-1){//TODOreturn;}postOrder(t,findLeftChild(t,i));postOrder(t,findRightChild(t,i));printf("%d",t[i]);
}
相关文章:
二叉树的顺序存储和基本操作实现
写代码:定义顺序存储的二叉树(数组实现,树的结点从数组下标1开始存储) 基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号 基于上述定义,写一个函数 int leftChild ( i…...
python学习-10【模块】
1、认识模块 导入模块 使用 import 语句使用 from … import 语句 1、import modulename [as alias] modulename:表示要导入的模块名as alias:可选参数,为模块起的别名 2、from modulename import name modulename:模块名&#x…...

modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持
一、前言说明 搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一点就是大大提…...
数值计算 --- 平方根倒数快速算法(0x5f3759df,这是什么鬼!!!)
平方根倒数快速算法 --- 向Greg Walsh致敬! 1,牛顿拉夫逊 已知x,要计算,假设的值为a,则: ,(式1) 如果定义一个自变量为a的函数f(a): 则,令函数f(a)等于0的a就…...
迭代器和生成器的学习笔记
迭代器 Python 迭代器是一种对象,它实现了迭代协议,包括 __iter__() 和 __next__() 方法。迭代器可以让你在数据集中逐个访问元素,而无需关心数据结构的底层实现。与列表或其他集合相比,迭代器可以节省内存,因…...
ES5 在 Web 上的现状
最后一个支持 ES5 的浏览器 IE 11 在 2022 年被微软停止支持,那么今天 Web 上的 ES5 现状如何?在构建生产代码时,Web 开发者的最佳实践是什么? 本文将通过数据来回答这些问题,并基于这些数据为网站开发者和库作者提供一…...
人话学Python-循环语句
一:while语句 while语句的组成由判断条件和执行语句组成。当满足条件时会不断执行后续语句,然后再循环执行的语句结束之后再次回到条件判断,如此循环。 pos 0 ans 0 while pos < 6:ans pos * 4pos 1 print(ans)>>>84"&…...

初识模版!!
初识模版 1.泛型编程1.1 如何实现一个交换函数呢(使得所有数据都可以交换)?1.2 那可以不可以让编译器根据不同的类型利用该模子来生成代码呢? 2.模版类型2.1 模版概念2.2 函数模版的原理2.3 函数模板的实例化2.4 模板参数的匹配原…...
算法之数学--hash算法 2021-03-11(未完待续)
1.hash算法 刷出一道墙 题目描述 Time Limit: 2000 ms Memory Limit: 256 mb 在一面很长的墙壁上,工人们用不同的油漆去刷墙,然而可能有些地方刷过以后觉得不好看,他们会重新刷一下。有些部分因为重复刷了很多次覆盖了很多层油漆ÿ…...

DHCP工作原理
在学习之前先提出几个问题:什么是DHCP?为什么要使用DHCP?在什么场景中使用DHCP?DHCP报文的目的IP和目的MAC是多少?DHCP报文是基于UDP还是基于TCP?DHCP服务器返回的报文中都包含什么信息? DHCP&a…...

服务发现和代理实例的自动更新
☞ 返回总目录 1.服务发现的两种方式 StartFindService 方法 这是一个在后台启动的连续 “FindService” 活动,当服务实例的可用性发生变化时,会通过回调通知调用者。 它返回一个FindServiceHandle,可通过调用StopFindService来停止正在进行…...

Redis的三种持久化方法详解
Redis持久化机制详解 | JavaGuide Redis 不同于 Memcached 的很重要一点就是,Redis 支持持久化,而且支持 3 种持久化方式: 快照(snapshotting,RDB)只追加文件(append-only file, AOF)RDB 和 A…...

OpenAI GPT o1技术报告阅读(5)-安全性对齐以及思维链等的综合评估与思考
✨继续阅读报告:使用大模型来学习推理(Reason) 原文链接:https://openai.com/index/learning-to-reason-with-llms/ 编码 我们训练了一个模型,在2024年国际信息学奥林匹克竞赛(IOI)中得分213分,排名在第…...

nodejs 012:Babel(巴别塔)语言转换与代码兼容
这里写目录标题 安装 Babel配置presets配置:常见的 Babel Presetsplugins配置:以 plugin-transform-class-properties 的类中属性为例index.jsx Babel 是一个独立的 JavaScript 编译器,主要用于将现代 JavaScript 代码转换为旧版本的 JavaScr…...

时间安全精细化管理平台存在未授权访问漏洞
漏洞描述 登录--时间&安全精细化管理平台存在未授权访问漏洞导致与员工信息泄露 FOFA: body"登录--时间&安全精细化管理平台" 漏洞复现 POC: IP/acc/_checkinoutlog_/...

软件卸载工具(windows系统)-geek
有时候软件卸载会很麻烦,使用geek会比较方便。但是针对一些特别大的软件,geek也好像会稍微费点劲(比如MATLAB2022A),不过针对一般常规软件的卸载,geek就可以有效地完全卸载了,使用方法也很简单,…...
第三篇 第14篇 工程计价依据
第三篇 工程计价 第14篇 工程计价依据 14.1 工程造价管理标准体系与工程定额体系 14.1.1 工程造价管理标准体系 1.基础标准 工程造价术语标准建筑工程计价设备材料划分标准有关建设工程费用构成通则。建设工程费用构成和分类是工程计价最重要的基础工作。 2.管理规范 建筑…...

java 异常-Exception
异常的概念 Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类 (1)Error(错误):Java 虚…...

爬虫逆向学习(六):补环境过某数四代
声明:本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 引用博客: https://blog.csdn.net/shayuchaor/article/details/103629294 https://blog.csdn.net/qq_36291294/article/details/128600583 https://blog.csdn.net/weixin_…...

IO流体系(FiletOutputStream)
书写步骤: 1.创建字节输出流对象 细节1:参数是字符串表示的路径或者是File对象都是可以的 细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。 细节3:如果文件已经存在,则会清空文件 2.写数据 细节:write方法的参数…...

RAG混合检索:倒数秩融合RRF算法
文章目录 检索增强生成 (RAG)倒数秩融合在 RAG 中的工作原理RRF 背后的数学直觉检索增强生成 (RAG) RAG 是自然语言处理中的一种强大技术,结合了基于检索的模型和生成模型的优势。 如果检索器未能从检索器中获取相关文档,则精度较低,幻觉的可能性会增加。 有些查询适合…...

力扣面试150题--二叉树的层平均值
Day 54 题目描述 思路 初次做法(笨):使用两个队列,一个队列存放树的节点,一个队列存放对应节点的高度,使用x存放上一个节点,highb存放上一个节点的高度,sum存放当前层的节点值之和…...

半导体厂房设计建造流程、方案和技术要点-江苏泊苏系统集成有限公司
半导体厂房设计建造流程、方案和技术要点-江苏泊苏系统集成有限公司 半导体厂房的设计建造是一项高度复杂、专业性极强的系统工程,涉及洁净室、微振动控制、电磁屏蔽、特殊气体/化学品管理等关键技术。 一、设计建造流程: 1.需求定义与可行性分析 &a…...

【测试】Bug和用例
软件测试贯穿于软件的整个⽣命周期 软件测试的⽣命周期是指测试流程,这个流程是按照⼀定顺序执⾏的⼀系列特定的步骤,去保证产品质量符合需求。在软件测试⽣命周期流程中,每个活动都按照计划的系统的执⾏。每个阶段有不同的⽬标和交付产物 Bu…...

2022 RoboCom 世界机器人开发者大赛-本科组(省赛)解题报告 | 珂学家
前言 题解 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)。 感觉T5是最简单的,其他都不好做。 RC-u5 树与二分图 分值: 30分 思路: 容斥原理 树天然就是二分图,按深度d归类(偶数深度为S1,奇数深度为S2)&#x…...

1-1 初探Dart编程语言
Dart 是 Google 最初开发的一种开源编程语言,适用于客户端与服务端开发。它配套提供 Dart SDK,其中包含 Dart 编译器、Dart 虚拟机(Dart VM)以及一个名为 dart2js 的工具,可将 Dart 脚本转换为 JavaScript,…...

【东枫科技】KrakenSDR 测向快速入门指南
本快速入门指南旨在帮助您使用运行在 Raspberry Pi 4/5 或 Orange Pi 5B (OPI5B)(带 WiFi 型号)上的 KrakenSDR 尽快连接到测向应用程序。不过,请务必阅读本手册的其余部分,以了解无线电测向的工作原理。 你需要什么 本指南假设…...

2.2.2 06年T1
成功的同化机器——美国:2006年考研英语(一)Text 1精析 本文解析2006年考研英语(一)第一篇文章,揭示美国社会强大的文化同化力及其表现。 一、原文与翻译 Paragraph 1:美国社会的同化本质 L1: …...

Linux入门(十一)进程管理
Linux 中每个执行的程序都称为一个进程,每个进程都分配一个ID号(PID) 每个进程都可能以两种方式存在,前台(屏幕上可以操作的)和后台(屏幕上无法看到的),一般系统的服务都…...

Scratch节日 | 粽子收集
端午节怎么过?当然是收粽子啦!这款 粽子收集 小游戏,让你一秒沉浸节日氛围,轻松收集粽子,收获满满快乐! 🎮 玩法介绍f 开始游戏:点击开始按钮,游戏正式开始!…...