数据结构===二叉树

文章目录

  • 概要
  • 二叉树的概念
  • 分类
  • 存储
  • 遍历
    • 前序
    • 中序
    • 后序
  • 小结

概要

简单写下二叉树都有哪些内容,这篇文章要写什么

  1. 二叉树的概念
  2. 分类,都有哪些
  3. 二叉树遍历

对一个数据结构,最先入手的都是定义,然后才会有哪些分类,对二叉树这个数据结构来说,遍历很有用。接下来看看。

二叉树的概念

二叉树的相关概念

二叉树是每个节点最多只有两个分支,分别叫“左子树”,“右子树”。一般是父节点>左子树 而且 父节点<右子树。

分类

基础概念有了,看看都有哪些种类

看过基础概念,再来看看都有哪些二叉树。主要有以下几种:
1. 满二叉树
2. 完全二叉树

什么是满二叉树呢?在二叉树中,叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点,这种二叉树就叫做满二叉树。如下图:

在这里插入图片描述
再来看看完全二叉树。在二叉树中,叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大。这样的二叉树是完全二叉树。如下图:

在这里插入图片描述
如上图,左边是完全二叉树,右边不满足条件,是非完全二叉树。

存储

按照存储划分有哪些?
其他的数据结构聊过,都是数组和链表的存储划分。二叉树这么划分,可以分为顺序存储法和链式存储法。

遍历

二叉树的遍历

对于二叉树这种非线性结构,遍历有前序,中序,后序三种遍历方式。

前序

前序遍历是指,对于树中的任意节点来说,先打印这个节点,然后再打印它的左子树,最后打印它的右子树。

递推公式:
前序遍历的递推公式:
preOrder® = print r->preOrder(r->left)->preOrder(r->right)

void preOrder(Node* root) {
  if (root == null) return;
  print root // 此处为伪代码,表示打印root节点
  preOrder(root->left);
  preOrder(root->right);
}

中序

中序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它本身,最后打印它的右子树。

中序遍历的递推公式:
inOrder® = inOrder(r->left)->print r->inOrder(r->right)

void inOrder(Node* root) {
  if (root == null) return;
  inOrder(root->left);
  print root // 此处为伪代码,表示打印root节点
  inOrder(root->right);
}

后序

后序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它的右子树,最后打印这个节点本身。

后序遍历的递推公式:
postOrder® = postOrder(r->left)->postOrder(r->right)->print r


void postOrder(Node* root) {
  if (root == null) return;
  postOrder(root->left);
  postOrder(root->right);
  print root // 此处为伪代码,表示打印root节点
}

小结

二叉树的数据结构

这一篇主要写了二叉树的概念,分类,完全二叉树,满二叉树;按照存储划分顺序存储,链式存储;遍历有三种方式:前序,中序,后序;基本上就这么多了。OK,翻篇。

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

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

相关文章

C语言 | Leetcode C语言题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; int climbStairs(int n) {double sqrt5 sqrt(5);double fibn pow((1 sqrt5) / 2, n 1) - pow((1 - sqrt5) / 2, n 1);return (int) round(fibn / sqrt5); }

机器人系统ros2-开发实践05-将静态坐标系广播到 tf2(Python)-定义机器人底座与其传感器或非移动部件之间的关系

发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如&#xff0c;最容易推断激光扫描仪中心框架中的激光扫描测量结果。 1. 创建包 首先&#xff0c;我们将创建一个用于本教程和后续教程的包。调用的包learning_tf2_py将依赖于geometry_msgs、pyth…

【负载均衡式在线OJ项目day1】项目结构

一.功能 查看题目列表&#xff0c;在线编程&#xff0c;判题功能&#xff0c;即leetcode的部分功能 二.宏观结构 整个项目是BS模式&#xff0c;客户端是浏览器&#xff0c;和用户交互并向服务器发起请求。 服务端从功能上来说分为两个模块&#xff0c;第一个是OJServer&…

FFmpeg———encode_video(学习)

目录 前言源码函数最终效果 前言 encode_video:实现了对图片使用指定编码进行编码&#xff0c;生成可播放的视频流&#xff0c;编译时出现了一些错误&#xff0c;做了一些调整。 基本流程&#xff1a; 1、获取指定的编码器 2、编码器内存申请 3、编码器上下文内容参数设置 4、…

平平科技工作室-Python-超级玛丽

一.准备图片 放在文件夹取名为images 二.准备一些音频和文字格式 放在文件夹media 三.编写代码 import sys, os sys.path.append(os.getcwd()) # coding:UTF-8 import pygame,sys import os from pygame.locals import* import time pygame.init() # 设置一个长为1250,宽为…

03.配置监控一台服务器主机

配置监控一台服务器主机 安装zabbix-agent rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm配置zabbix-agent,配置的IP地址是zabbix-server的地址&#xff0c;因为要监控这台主机 vim /etc/zabbix/zab…

淘宝线上扭蛋机小程序:推动扭蛋机销量

扭蛋机作为一个新兴的娱乐消费模式&#xff0c;能够带给消费者“盲盒式”的消费乐趣&#xff0c;正在快速发展中。消费者通过投币、扫码支付等&#xff0c;在机器上扭下按钮就可以随机获得一个扭蛋商品&#xff0c;这些商品也包括动漫衍生周边、IP主题商品等&#xff0c;种类多…

先电2.4的openstack搭建

先电2.4版本的openstack&#xff0c;前期虚拟机部署参考上一篇2.2版本&#xff0c;基本步骤是一样的&#xff0c;准备两个镜像文件CentOS-7.5-x86_64-DVD-1804.iso&#xff0c;XianDian-IaaS-V2.4.iso [rootcontroller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777…

新手开抖店多久可以出单?做好这两点!七天必出单!

哈喽~我是电商月月 很多新手开抖店长时间不出单&#xff0c;觉得不正常&#xff0c;害怕新手根本做不起来店&#xff0c;就会搜索&#xff1a;新手开抖店多久可以出单&#xff1f; 新手开店&#xff0c;合理运营的话&#xff0c;七天里肯定是能出几单的&#xff0c;但没做好的…

AI新突破:多标签预测技术助力语言模型提速3倍

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; 引言&#xff1a;多标签预测的新视角 在人工智能领域&#xff0c;尤其是在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;预测模型的训练方法一直在…

Android(一)

坏境 java版本 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 进入安卓官网下载 勾选协议 next 如果本地有设置文件&#xff0c;选择Config or installation folder 如果本地没有设置文件&#xff0c;选择Do not import settings 同意两个协议 耐…

Android 14 init进程解析

前言 当bootloader启动后&#xff0c;启动kernel&#xff0c;kernel启动完后&#xff0c;在用户空间启动init进程&#xff0c;再通过init进程&#xff0c;来读取init.rc中的相关配置&#xff0c;从而来启动其他相关进程以及其他操作。 init进程启动主要分为两个阶段&#xff1…

张大哥笔记:卖盗版网课,获利 100 万被抓

这几天刷视频&#xff0c;看到一个新闻&#xff0c;某大学生卖盗版网课&#xff0c;把别人2000多正版网课&#xff0c;以做活动名义售卖20元&#xff0c;获利100多万被抓。 下方图片来自&#xff1a;极目新闻 卖这种盗版网课&#xff0c;门槛低&#xff0c;成本低&#xff0c;…

win中python中OpenCV使用cv2.imshow()报错的解决办法

1. 问题 cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK 2.x or Cocoa support. If you are on Ubuntu o…

Python实现SMA黏菌优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 黏菌优化算法&#xff08;Slime mould algorithm&#xff0c;SMA&#xff09;由Li等于2020年提出&…

汉之名将韩信

与英勇霸气的项羽相比&#xff0c;刘邦或许显得无能猥琐&#xff0c;但刘邦深知自己的不足&#xff0c;愿意放权给跟随他的人&#xff0c;让他们发挥才能。正是这种谦逊和智慧&#xff0c;最终让刘邦赢得了天下。 帷帐之间筹谋&#xff0c;千里之外决胜&#xff0c;我之子房无…

计算机服务器中了halo勒索病毒怎么处理,halo勒索病毒解密流程步骤

在网络技术飞速发展的时代&#xff0c;越来越多的企业走向了数字化办公模式&#xff0c;利用网络可以开展各项工作业务&#xff0c;网络也为企业的生产运营提供了极大便利&#xff0c;但网络是一把双刃剑&#xff0c;从网络出现就一直存在网络数据安全问题&#xff0c;这也是众…

Essential Input and Output

How to read data from the keyboard? How to format data for output on the screen? How to deal with character output? 一、Input from the Keyboard the scanf_s() function that is the safe version of scanf() int scanf_s(const char * restrict format, ... );…

电子电器架构 --- 主机厂产线的两种刷写方法

电子电器架构 — 主机厂产线的两种刷写方法 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…

【Django学习笔记(六)】MySQL的安装配置、启动关闭操作

MySQL的安装配置、启动关闭操作 前言正文1、初识网站1.1 实现静态网站与动态网站效果1.2 数据存储方式 2、MySQL的安装和配置2.1 MySQL下载2.2 安装补丁2.3 安装MySQL2.4 创建配置文件2.5 初始化 3、MySQL的启动和关闭4、MySQL连接测试4.1 MySQL 的连接方式4.2 使用 MySQL自带工…
最新文章