notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • 数据结构基础

    • 排序
    • 树
      • 1. 二叉树的定义
        • 1.1 相关概念
        • 1.2 存储方式
        • 1.3 二叉树的遍历
      • 2. 二叉查找树
    • 图
  • 算法设计与分析

  • 数据结构与算法
  • 数据结构基础
yubin
2023-06-29
目录

树

# 1. 二叉树的定义

# 1.1 相关概念

相关概念:父节点、子节点、兄弟节点、根节点、叶子节点

高度、深度、层:

20230629140720
  • 高度:就像我们说第几层楼时,说一楼、二楼是从最底下说的,这个高度也是。
  • 深度:就像说海有多深一样,是从海平面开始算起的,这里也是,tree 是从根节点开始算起的。
  • 层:跟深度的计算类似,不过,计数起点是 1,也就是说根节点位于第 1 层。

有一些特殊的二叉树:

  • 满二叉树:叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点(如下图左)
  • 完全二叉树:叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大(如下图右)
20230629141554

# 1.2 存储方式

两种存储方式:

  1. 链式存储法
20230629141722
  1. 顺序存储法
20230629141736

# 1.3 二叉树的遍历

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

相关代码:

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

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

void postOrder(Node* root) {
  if (root == null) return;
  postOrder(root->left);
  postOrder(root->right);
  print root // 此处为伪代码,表示打印root节点
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

从前、中、后序遍历的顺序图,可以看出来,每个节点最多会被访问两次,所以遍历操作的时间复杂度,跟节点的个数 n 成正比,也就是说二叉树遍历的时间复杂度是 O(n)。

# 2. 二叉查找树

编辑 (opens new window)
#数据结构
上次更新: 2023/07/02, 05:18:55
排序
图

← 排序 图→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×