树和二叉树的介绍

树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
它具有以下的特点:
每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。
请添加图片描述

树的有关概念

  1. 节点的度:一个节点含有的子树的个数称为该节点的度;如上图: A的为3
  2. 叶节点或终端节点:度为0的节点称为叶节点:如上图: K,L,F,G等节点为叶节点
  3. 非终端节点或分支节点:度不为0的节点;如上图: B,C,D等节点为分支节点
  4. 双亲节点或父节点:若一个节点含有子 节点,则这个节点称为其子节点的父节点;如上图: A是B,C,D的父节点
  5. 孩子节点或子节点: 一个节点含有的子树的根节点称为该节点的子节点;如上图: B, C,D是都是A的孩子节点
  6. 兄弟节点:具有相同父节点的节点互称为兄弟节点;如上图: B. C是兄弟节点
    树的度: 一棵树中,最大的节点的度称为树的度;如上图:树的度为6
  7. 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
  8. 树的高度或深度:树中节点的最大层次; 如上图:树的高度为4
  9. 节点的祖先:从根到该节点所经分支上的所有节点;如上图: A是所有节点的祖先
  10. 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。 如上图:所有节点都是A的子孙
  11. 森林:由m (m>0) 棵互不相交的多颗树的集合称为森林

二叉树

二叉树就是所有节点的度都<=2的树

如下图
请添加图片描述

二叉树的性质

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

2.若规定根节点的层数为1,则深(高)度为h的二叉树的最大结点数是2h-1
证:
最大节点数=每一层最大节点数之和
根据性质1:
第一层最大节点个数为2(1-1)
第二层最大节点个数为2(2-1)
第三层最大节点个数为2(3-1)
……
第h层最大节点个数为2(h-1)

最大节点个数=2(1-1)+ 2(2-1)+2(3-1)+……+2(h-1)=2h-1

3.对任何一棵二叉树,如果度为0其叶结点个数为n0,度为2的分支结点个数为n2则有n0=n2+ 1

满二叉树和完全二叉树

  • 满二叉树:一个二叉树,如果每一个层的结点数都达到最大值(每一个节点的度都是二),则这个二叉树就是满二叉树。
    也就是说,如果一个二叉树的层数为K,且结点总数是(2^k)-1 ,则它就是满二叉树。

  • 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。
    对于深度为h的,有n个结点的二叉树,当h-1层都是满的(前h-1层的节点的度都为2),最后一层不满但是节点从左到右是连续的
    请添加图片描述

满二叉树和完全二叉树的高度

满二叉树的高度=log2 N(N为总节点个数
证:
因为高度为h的二叉树的最大结点数是2h-1
设节点的总个数为N
则N=2h-1->h=log2(N+1),可以近似为log2 N

完全二叉树的高度为log2N-1~log2N之间
完全二叉树的最后一层最少有一个节点,此时完全二叉树的总节点数为2(h-1)
则N=2(h-1)->h=log2N-1,可以近似为log2 N

完全二叉树的最后一层最多是为满二叉树,此时完全二叉树高度为log2N

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nmcli --help(nmcli -h)nmcli文档、nmcli手册

文章目录 nmcli --helpOPTION解释OBJECT解释1. g[eneral]&#xff1a;查看NetworkManager的状态2. n[etworking]&#xff1a;启用或禁用网络3. r[adio]&#xff1a;查看无线电状态&#xff08;例如&#xff0c;Wi-Fi&#xff09;4. c[onnection]&#xff1a;列出所有的网络连接…

AIGC: 3. AI时代程序员的生存模式思考

AI跟程序员关系思考 在 3 月 9 日央视的《对话》的开年说节目上&#xff0c;百度创始人、董事长兼 CEO 李彦宏先生表示&#xff1a; 1.基本上以后不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力。 2.“未来的编程语言只会剩下…

Android开发失业50天,面了10家公司,唯二的offer也主动拒了

于我看来并没有&#xff0c;最多说“Android 技术的探索”进入了下半场&#xff0c;而整个市场还是乐观的。 以前是 BAT 的天下&#xff0c;而近两年出来越来越多的独角兽&#xff1a;头条、抖音、拼多多、快手、小猿搜题等&#xff0c;这些公司的业务都在移动端上&#xff0c…

VMware安装Ubuntu 18.04.2

下载Ubuntu映像 下载地址&#xff1a;http://old-releases.ubuntu.com/releases/18.04/ 下载名称&#xff1a; ubuntu-18.04.2-desktop-amd64.iso 清华镜像站&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ 阿里云镜像站&#xff1a;https://mirrors.ali…

【MySQL】3. 库的操作

库的操作 1. 创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_name说明&#xff1a; 大写的表示关键字 …

挑战杯 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

前端基础——HTML傻瓜式入门(1)

该文章Github地址&#xff1a;https://github.com/AntonyCheng/html-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

day05-SpringBootWeb请求响应

请求响应&#xff1a; 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据响应&#xff08;HttpServletResponse&#xff09;&#xff1a;设置响应数据 BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xf…

【C语言】字符(串)函数详解~

一、前言 这一期的博客&#xff0c;将会着重讲解常见的字符或字符串的相关库函数。C语言中有一组库函数专门用来处理字符类型的数据的&#xff0c;后文则会介绍字符分类函数以及字符转换函数。字符串相关的函数是本篇博客的重点&#xff0c;这也是为什么标题是字符串函数详解。…

【C++进阶】深度解析AVL树及其简单模拟实现

AVL树的解析和模拟实现 一&#xff0c;什么是AVL树二&#xff0c;AVL树的特性三&#xff0c;模拟实现1. 基本框架2. 插入&#xff08;不带旋转&#xff09;2. AVL树的旋转3. AVL树的验证 四&#xff0c;总结 一&#xff0c;什么是AVL树 之前我们学习了二叉搜索树&#xff0c;但…

C++实验 面向对象编程

一、实验目的&#xff1a; 掌握类中静态成员的定义方法&#xff0c;初始化方法&#xff0c;使用方法&#xff1b; 掌握类的友元说明方法&#xff0c;理解友元的使用特点 二、实验内容&#xff1a; 1、编写程序&#xff0c;统计某旅馆住宿客人的总数&#xff0c;要求输入客人…

计算机二级(Python)真题讲解每日一题:《绘制雪花》

在横线处填写代码&#xff0c;完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬…

Vue.js 应用实现监控可观测性最佳实践

前言 Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 TinyPro 是一套使用 Vue …

SQL Server错误:15404

执行维护计划失败&#xff0c;提示SQL Server Error 15404 无法获取有关... 异常如下图&#xff1a; 原因&#xff1a;数据库用户名与计算机名称不一致 解决办法&#xff1a;1.重名称数据库用户名 将前缀改成计算机名 2.重启SQL Server代理

JAVA基础—JVM内存结构基础需知

1.JVM内存结构 JVM内存结构分为5个区域&#xff1a;方法区&#xff0c;虚拟机栈&#xff0c;本地方法栈、堆、程序计数器。 1.方法区&#xff08;Method Area&#xff09;&#xff1a;用于存储类的结构信息、常量、静态变量、即使编译器编译后的代码等数据。方法区也是所有线…

Ansys Lumerical | 激光雷达天线仿真

附件下载 联系工作人员获取附件 在本文中&#xff0c;我们将了解如何根据激光雷达应用需求设计和优化相控阵光栅天线。 概述 激光雷达&#xff08;LIDAR&#xff09;是“light detection and ranging”的简称&#xff0c;近年来由于在机器人、自动驾驶汽车、高精度测绘等领域…

自动写作软件哪个好?分享7款独家推荐

随着人工智能技术的不断发展&#xff0c;自动写作软件正逐渐成为现代写作的利器。这些AI写作工具能够帮助用户高效地生成文章、报告、新闻稿等内容&#xff0c;为写作工作带来了极大的便利。然而&#xff0c;市面上的自动写作软件琳琅满目&#xff0c;让人眼花缭乱。为了帮助读…

Java多线程学习(一)

1、什么是多线程 进程的执行需要依赖线程。线程是进程的最小执行单位&#xff0c;每一个进程中最少有一个线程。 例如&#xff1a;使用某网盘下载时&#xff0c;当我们同时进行下载和上传操作时&#xff08;同一时间同时进行&#xff09;&#xff0c;就使用到了多线程&#x…

德国法兰克福交易所股票清单列表数据API接口

# Restful API https://tsanghi.com/api/fin/stock/XFRA/list?token{token}更新时间&#xff1a;收盘后3~4小时。 更新周期&#xff1a;每天。 请求方式&#xff1a;GET。 # 测试&#xff1a;返回不超过10条数据&#xff08;2年历史&#xff09; https://tsanghi.com/api/fin/…

【Java,Redis】Redis 数据库存取字符串数据以及类数据

1、 字符串存取数据 Resource private StringRedisTemplate stringRedisTemplate;//从Redis中获取string字符串 stringRedisTemplate.opsForValue().get("cache:shop:"id); //Json -> class Shop shop JSONUtil.toBean(ShopJson,Shop.class); //字符串写入redis…