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

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:真题

相关推荐
YL200404261 小时前
038翻转二叉树
数据结构·leetcode
likerhood3 小时前
ConcurrentHashMap底层数据结构和面试常见问题
java·数据结构·面试·hashmap
Languorous.4 小时前
C++数据结构高阶|布隆过滤器(Bloom Filter)深度解析:从原理到手写实现,面试高频考点全覆盖
数据结构·c++·面试
流年如夢5 小时前
二叉树详解
c语言·数据结构·算法
博界IT精灵5 小时前
二叉排序树和平衡二叉树(哈喜老师)
数据结构·考研
木子墨5165 小时前
工程算法实战 | 从LRU到手写本地缓存:LinkedHashMap → 双向链表+哈希表 → Caffeine 原理
java·数据结构·算法·链表·缓存
流年如夢6 小时前
二叉树(LeetCode)
数据结构·算法·leetcode·职场和发展
玉树临风ives6 小时前
atcoder ABC 457 题解
数据结构·c++·算法
驭渊的小故事6 小时前
Java数据结构集合框架(栈(Stack)的详细解析)2000字详细解析
数据结构
宵时待雨7 小时前
回溯算法专题1:递归
数据结构·c++·笔记·算法·leetcode·深度优先