数据结构树与森林

简介: 数据结构树与森林

易混淆的概念

树的度 树中各结点度的最大值
结点的度 结点的分支数目
结点的高度 从下往上,默认从1开始
结点的深度/层次 从上往下,默认从1开始
树的路径长度 根节点到每个节点的路径长度之和
终端节点 等价为叶子结点(度为0的结点)
非终端节点 非叶子结点,也叫分支结点

树的性质的常见考点

  • 节点数=总度数+1
  • 度为m的树VS m叉树
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
考点6和考点4是一个反解关系

树,森林

树的存储结构

双亲存储表示法(顺序存储)

在这里插入图片描述

孩子表示法(顺序+链式)

在这里插入图片描述

孩子兄弟法

在这里插入图片描述
左孩子右兄弟

树,森林,二叉树的转化

在这里插入图片描述
秉承左孩子右兄弟
==森林中的叶节点的个数等于对应二叉树的左孩子指针为空的节点个数==

树和森林的遍历

树的遍历

先根遍历 与这棵树相应二叉树的先序序列相同
后根遍历 与这棵树相应二叉树的中序序列相同
层次遍历 就一层一层编号呗

森林的遍历

先序遍历 从左到右依次对树先根遍历
中序遍历 从左到右依次对树后根遍历

在这里插入图片描述

二叉树

概念

可为空树,左右子树不可颠倒

二叉树 VS 度为2的树:

  1. 度为2的树结点个数至少是3个
       2. 度为2的树如果只有一个孩子,这个孩子无须区分左右,但是二叉树左右孩子的次序是固定的

特殊二叉树

  • 满二叉树:所有叶子节点都在二叉树的最下一层
  • 完全二叉树:与满二叉树编号相同的子树
    在这里插入图片描述
  • 二叉排序树(二叉查找树)(BST):左子树上的所有结点的关键字均小于根节点
  • 平衡二叉树(AVL):在二叉排序树的基础上,左右子树深度之差不超过1

二叉树的性质:

  • n0=n2+1
  • 二叉树的第i层最多2的i-1次方个结点
  • 高度为h的二叉树最多有2的h次方-1个结点

完全二叉树的性质:

  • 完全二叉树最多只会有一个度为一的结点
  • 编号为i的左儿子为2i,右儿子为 2i+1
  • 完全二叉树的最后一个分支节点的序号为n/2向下取整

二叉树的存储结构

顺序存储结构:(比较适合完全二叉树,不然太浪费空间了)
在这里插入图片描述
链式存储:
在这里插入图片描述

目录
相关文章
|
1月前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
86 64
|
4天前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
43 16
|
27天前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
16 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
1月前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
1月前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(三)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
1月前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(二)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
1月前
|
存储
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(一)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
24天前
|
Java C++
【数据结构】探索红黑树的奥秘:自平衡原理图解及与二叉查找树的比较
本文深入解析红黑树的自平衡原理,介绍其五大原则,并通过图解和代码示例展示其内部机制。同时,对比红黑树与二叉查找树的性能差异,帮助读者更好地理解这两种数据结构的特点和应用场景。
23 0
|
2月前
|
JSON 前端开发 JavaScript
一文了解树在前端中的应用,掌握数据结构中树的生命线
该文章详细介绍了树这一数据结构在前端开发中的应用,包括树的基本概念、遍历方法(如深度优先遍历、广度优先遍历)以及二叉树的先序、中序、后序遍历,并通过实例代码展示了如何在JavaScript中实现这些遍历算法。此外,文章还探讨了树结构在处理JSON数据时的应用场景。
一文了解树在前端中的应用,掌握数据结构中树的生命线