森林和二叉树的转换(哈喜老师)

1.树的存储结构

1.1:树的三种存储结构

树的三种存储结构分别是双亲表示法、孩子表示法、孩子兄弟表示法

1.1.1 :双亲表示法

cpp 复制代码
// 这里参考了王道书上的代码,哈喜老师课程中的代码不对
#define MAX_SIZE 100
// 结点结构的定义
typedef struct PTNode{
    ElemType data;  // 数据域,用于存储结点中的值
    int parent;     // parent域,用于指向该结点的双亲(parent等于-1时,表示该结点没有父结点,也就是说该结点是根结点)
}PTNode;

// 树的类型的定义
typedef struct {
    PTNode nodes[MAX_SIZE]; // 存储所有结点的数组
    int n;                  // 树中实际的结点个数
}PTree;

1.1.2 :孩子表示法

1.1.3 :孩子兄弟表示法

cpp 复制代码
typedef struct CSNode{
    ElemType data;                  //数据域
    struct CSNode *firstchild; //指向该结点最左边的孩子
    struct CSNode *nextsibling;  // 指向该结点右边相邻的兄弟
}CSNode, *CSTree;

2.树、二叉树、森林的转换 (很重要)

2.1:树转换为二叉树

2.2:二叉树转换为树

2.3:森林转换为二叉树

2.4:二叉树转换为森林

2.5:习题

习题一(有难度)

习题二:(偏简单)

习题三:(有难度)

习题四:(难,思路很不好想,暂时还不理解)

真题(难,还没完全理解)

3.树和森林的遍历

3.1:树的遍历 (非重点)

3.2:森林的遍历 (非重点)

3.3:树、二叉树、森林的遍历关系 (重点)

3.3.1:真题

相关推荐
Severus_black2 小时前
算法题C——用队列实现栈/用栈实现队列
c语言·数据结构·算法·链表
承渊政道2 小时前
【递归、搜索与回溯算法】(掌握记忆化搜索的核心套路)
数据结构·c++·算法·leetcode·macos·动态规划·宽度优先
Little At Air2 小时前
C++priority_queue模拟实现
开发语言·数据结构·c++
xieliyu.3 小时前
Java手搓数据结构:从零模拟实现顺序表增删改查
java·开发语言·数据结构·学习·顺序表
我不是懒洋洋3 小时前
【数据结构】二叉树-堆(树的概念、二叉树的概念、顺序结构的结构及实现、堆的实现、堆排序、TopK问题)
c语言·数据结构·c++·经验分享·算法·青少年编程
KobeSacre3 小时前
将有序数组转换为二叉搜索树
数据结构·算法·leetcode
不爱吃炸鸡柳13 小时前
数据结构精讲:树 → 二叉树 → 堆 从入门到实战
开发语言·数据结构
Aurorar0rua13 小时前
CS50 x 2024 Notes C - 05
java·c语言·数据结构
良木生香14 小时前
【C++初阶】:STL——String从入门到应用完全指南(1)
c语言·开发语言·数据结构·c++·算法