c使用二叉链表创建二叉树遇到的一些疑问和思考
Posted zhangpengfei5945
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c使用二叉链表创建二叉树遇到的一些疑问和思考相关的知识,希望对你有一定的参考价值。
二叉链表存储二叉树
学习的时候参考的是《大话数据结构》,书中是这样定义的
typedef char TElemType;
typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
结构是这样的,每个节点都存储着当前节点的值,还存储着指向左节点的指针和右节点的指针
typedef 是干什么的
typedef 可以用来定义真实的类型名
一开始我不理解
typedef struct BiTNode {
}*BiTree;
后来通过类比,char === TElemType
那么 BiTree = struct BiTNode*;
所以使用 typedef 可以定义真实类型名,也方便我们后期维护,后期如果我们需要修改变量的类型,可以直接修改 typedef 的定义就可以了
创建二叉树的时候为什么要传指向二叉树节点的指针的指针 struct BiNode* *T
这个问题的存在还是自己没有真正理解指针的使用场景,当我们创建新的节点的时候,我们首先要需要定义一个指向节点地址的指针,我们将这个指针传入到函数当中,我们这个指针的指向是结构体的地址,所以如果我们想要获取结构体的话
需要使用 *T 获取这个结构体指针的内容,有点绕,需要我们平常使用的时候多多留心使用
以后解决问题可以用到的思想和方法
类比 类似于 数学中的 数学归纳法 n = 1,n = 2,n = 3 .....
将我们不熟悉的东西或者感觉到陌生和害怕的东西转化为我们使用过的熟悉的东西或者知识点进行理解和使用。
以上是关于c使用二叉链表创建二叉树遇到的一些疑问和思考的主要内容,如果未能解决你的问题,请参考以下文章
用C语言编写程序,创建一个二叉树的二叉链表结构,然后输出从根结点到所有叶子结点的路径。