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

C语言:二叉树基础

一、树

1.1    树的概念

1.树是有n个节点组成的具有层次关系的集合,是一种非线性的结构。

2.树的第一个节点称为根,根没有前驱节点。

3.除了根节点,其余每个节点都只有一个前驱节点,有0个或多个后继节点。

4.节点的度:一个节点含有子树的个数(后继节点的个数)称为该节点的度。

5.叶子节点或终端节点:度为0的节点。

6.非终端节点或分支节点:度不为0的节点。

7.父节点或子节点:如果一个节点含有子节点(后继节点),则这个节点为子节点的父节点。

8.子节点或孩子节点:如果一个节点含有父节点(前驱节点),则这个节点为父节点的子节点。

9.兄弟节点:具有相同父节点的节点互为兄弟节点。

10.树的度:在一颗树中,所有节点中度最大的节点的度,就是这颗树的度。

11.节点的层次:从根开始位第一层,根的子节点为第二层,以此类推。

12.树的高度或深度:节点的最大层次即为树的高度。

13.堂兄弟节点: 两个节点的父节点在同一层的节点互为堂兄弟节点。

14.节点的祖先:从该节点到根经过的所有节点均为该节点的祖先。根节点是所有节点的祖先。

15.子孙:以某一个节点为根的子树中的任意节点都是该节点的子孙。

16.森林:有n(n>0)棵互不相交的树的集合称为森林。

二、二叉树

2.1二叉树的概念

1.概念:如果一颗树的所有节点的子节点都不超过2,则这颗树可以称为二叉树。

2.满二叉树:如果一个二叉树的每一层节点数都达到最大,则这个二叉树为满二叉树。

3.完全二叉树:完全二叉树与满二叉树的区别在最后一层,完全二叉树的最后一层最后一层可以不满,但从左至右的节点必须连续不能有空。满二叉树是一种特殊的完全二叉树。

4.二叉树的性质:

 1. 若规定根节点的层数为i,则一棵非空二叉树的i层上最多有 2^(i-1)个结点.

2. 若规定根节点的层数为i,则深度为h的二叉树的最大结点数是2^i-1.

3. 对任何一棵二叉树 , 如果度为0 其叶结点个数为x , 度为 2 的分支结点个数为y  ,则x=y+1.
4. 若规定根节点的层数为 1 ,具有 n 个结点的满二叉树的深度 ,h=log(n+1)
5. 对于具有 n 个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从 0开始编号,则对于序号为i的结点有:
1. i>0i位置节点的双亲序号:(i-1)/2i=0i为根节点编号,无双亲节点
2. 2i+1<n,左孩子序号:2i+12i+1>=n否则无左孩子
3. 2i+2<n,右孩子序号:2i+22i+2>=n否则无右孩子

相关文章:

C语言:二叉树基础

一、树 1.1 树的概念 1.树是有n个节点组成的具有层次关系的集合&#xff0c;是一种非线性的结构。 2.树的第一个节点称为根&#xff0c;根没有前驱节点。 3.除了根节点&#xff0c;其余每个节点都只有一个前驱节点&#xff0c;有0个或多个后继节点。 4.节点的度&#x…...

LeetCode热题Hot100-两数之和

充分意识到Coding能力的重要性&#xff0c;重启算法刷题之旅。 没想到这么简单的题目都写的磕磕绊绊。 一刷只写自己的解&#xff0c;二刷再看有没有其他更巧妙的方法~ 题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目…...

鸿蒙实战开发-如何通过拖动滑块调节应用内字体大小

介绍 本篇Codelab将介绍如何使用基础组件Slider&#xff0c;通过拖动滑块调节应用内字体大小。要求完成以下功能&#xff1a; 实现两个页面的UX&#xff1a;主页面和字体大小调节页面。拖动滑块改变字体大小系数&#xff0c;列表页和调节页面字体大小同步变化。往右拖动滑块字…...

matlab实现神经网络检测手写数字

一、要求 1.计算sigmoid函数的梯度&#xff1b; 2&#xff0e;随机初始化网络权重&#xff1b; 3.编写网络的代价函数。 二、算法介绍 神经网络结构&#xff1a; 不正则化的神经网络的代价函数&#xff1a; 正则化&#xff1a; S型函数求导&#xff1a; 反向传播算法&…...

增强现实与虚拟现实中的大模型应用:沉浸式体验的创新

增强现实与虚拟现实中的大模型应用&#xff1a;沉浸式体验的创新 1. 背景介绍 随着技术的进步&#xff0c;增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;正在成为越来越受欢迎的沉浸式体验方式。大模型&#xff0c;如神经网络和深度学习模型&…...

【数据分析案列】--- 北京某平台二手房可视化数据分析

一、引言 本案列基于北京某平台的二手房数据&#xff0c;通过数据可视化的方式对二手房市场进行分析。通过对获取的数据进行清冼&#xff08;至关重要&#xff09;&#xff0c;对房屋价格、面积、有无电梯等因素的可视化展示&#xff0c;我们可以深入了解北京二手房市场的特点…...

【Golang星辰图】创造美丽图表,洞察数据:解析Go语言中的数据可视化和数据分析库

解锁数据的力量&#xff1a;深入研究Go语言中的数据可视化和数据分析库 前言 本文将介绍Go语言中几个优秀的数据可视化和数据分析库&#xff0c;以帮助开发者更好地处理和分析数据。这些库提供了丰富的功能和工具&#xff0c;可用于创建漂亮的可视化图表、进行数值计算和数据…...

阿里云原生:如何熟悉一个系统

原文地址:https://mp.weixin.qq.com/s/J8eK-qRMkmHEQZ_dVts9aQ?poc_tokenHMA-_mWjfcDmGVW6hXX1xEDDvuJPE3pL9-8uSlyY 导读&#xff1a;本文总结了熟悉系统主要分三部分&#xff1a;业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题&#xff0c;这些问题…...

Scala第十一章节(正则表达式和异常处理)

4. 正则表达式 4.1 概述 所谓的正则表达式指的是正确的,符合特定规则的式子, 它是一门独立的语言, 并且能被兼容到绝大多数的编程语言中。在scala中, 可以很方便地使用正则表达式来匹配数据。具体如下: Scala中提供了Regex类来定义正则表达式.要构造一个Regex对象&#xff0…...

Flutter运行MacOs网络请求报错Unhandled Exception: DioException [connection error]:...

报错信息 [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioException [connection error]: The connection errored: Connection failed This indicates an error which most likely cannot be solved by the library. Error: SocketException: …...

基于SpringBoot+MyBatis框架的智慧生活商城系统的设计与实现(源码+LW+部署+讲解)

目录 前言 需求分析 可行性分析 技术实现 后端框架&#xff1a;Spring Boot 持久层框架&#xff1a;MyBatis 前端框架&#xff1a;Vue.js 数据库&#xff1a;MySQL 功能介绍 前台功能拓展 商品详情单管理 个人中心 秒杀活动 推荐系统 评论与评分系统 后台功能拓…...

Godot 学习笔记(5):彻底的项目工程化,解决GodotProjectDir is null

文章目录 前言GodotProjectDir is null解决方法解决警告问题根本解决代码问题测试引用其实其它库的输出路径无所谓。 总结 前言 Godot 项目工程化上有一朵乌云&#xff0c;我看Godot的Visual Studio 项目的时候&#xff0c;发现如果是手动新建项目导入Godot包&#xff0c;会导…...

Openharmony

OpenHarmony 是一个开源的、多设备分布式操作系统&#xff0c;由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营。它旨在提供跨多种设备的统一开发体验&#xff0c;支持一次开发&#xff0c;多端部署。OpenHarmony 的系统架构遵循分层设计原则&…...

24计算机考研调剂 | 华南师范大学

华南师范大学接收调剂研究生 考研调剂招生信息 学校:华南师范大学 专业:- 年级:2024 招生人数:- 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP查看) 补充内容 课题组主要研究生物拉曼光谱技术、基于荧光的微生物快检技术、显微成像设备与相…...

【Node.js】全局变量和全局 API

node 环境中没有 dom 和 bom &#xff0c;此外 es 基本上都是可以正常使用的。 如果一定要使用 dom 和bom&#xff0c;可以借助第三方库 jsdom 帮助我们实现操作。npm i jsdom 实例&#xff1a; const fs require(node:fs) const {JSDOM} require(jsdom)const dom new JS…...

Install Docker

Docker Desktop 直接安装 Docker Desktop Docker Desktop includes the Docker daemon (dockerd), the Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper. Linux下安装Docker CE 参考官方文档 参见阿里云的文档 # step 1…...

Orbit 使用指南 10|在机器人上安装传感器 | Isaac Sim | Omniverse

如是我闻&#xff1a; 资产类&#xff08;asset classes&#xff09;允许我们创建和模拟机器人&#xff0c;而传感器 (sensors) 则帮助我们获取关于环境的信息&#xff0c;获取不同的本体感知和外界感知信息。例如&#xff0c;摄像头传感器可用于获取环境的视觉信息&#xff0c…...

GPT系列模型的特点

GPT系列模型&#xff08;包括GPT-1、GPT-2和GPT-3&#xff09;都基于自回归机制的Transformer架构。在设计上&#xff0c;这些模型的核心思想是利用Transformer架构来捕捉整个序列的上下文信息&#xff0c;通过其独特的自回归机制逐步地整合整个序列的完整语义。GPT系列模型的设…...

Oracle Data Guard常用命令

--查询数据库角色和保护模式 select database_role,switchover_status from v$database; --切换备库为主库&#xff08;切换后&#xff0c;主库为mount状态&#xff09; --TO PRIMARY alter database commit to switchover to primary; --SESSIONS ACTIVE alter database comm…...

IM系统设计之websocket消息转发

Websocket消息转发 项目地址&#xff1a;gitgithub.com:muyixiaoxi/Link.git 上周面试被面试官问到&#xff1a;“在分布式IM系统中&#xff0c;如何实现多个websocket集群之间的通信”。 我在思考了良久后回答&#xff1a;“不会”。 随着我的回答&#xff0c;我和面试官的…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...