关于BiTNode和*BiTree的简单理解

1024程序员节日快乐
目前正在考研,时间紧任务重,为了庆祝节日,发一篇博客吧。
本文阐述了我对BiTNode和*BiTree的简单理解的简单理解

1.声明一个结构体

typedef struct XXXBiTNode{
    int data;
    struct XXXBiTNode *lchild,*rchild;
}BiTNode,*BiTree;//二叉树结点结构

2.关于BiTNode和*BiTree的理解

typedef 是起一个别名的意思
在这里BiTNode实际上相当于struct XXXBiTNode
在结构体定义时:
	struct XXXBiTNode varName来定义变量,
	但要注意,使用XXXBiTNode varName来定义变量是不对的
	因为struct和XXXBiTNode合在一起才能表示一个结构类型。
	我们需要用typedef来起一个别名 
	使得BiTNode相当于struct XXXBiTNode,这样我们就可以使用BiTNode varName来定义变量。
同理:
	 struct XXXBiTNode *BiTree 将 struct XXXBiTNode *这个类型重命名为BiTree(BiTree被定义成了结构体地址类型)
	 当采用BiTree再定义指针时候:BiTree *root其本质就是struct XXXBiTNode **root
	 此时root是一个二级指针,二级指针变量root指向一级指针变量BiTree,并保存BiTree的地址

3.其他理解

在分配空间时:
	一个指针节点需要的空间大小与BiTNode的大小和结构体内部结构有关。 
	因此分配空间的时候采用*root=(BiTNode *) malloc(sizeof (BiTNode)); 
	分配一片大小为BiTNode的连续内存空间,然后返回首地址,root就指向这个地址。
	root相当于门牌号,那么*就是家里的钥匙。
	*root就是我打开地址为root的门(回家),开门之后我们才能看到家里的好吃的(取数据)。
	因此*root才能进行赋值等操作,开门之后才能对家里的东西进行操作。 

你可能感兴趣的:(数据结构与算法,1024程序员节,数据结构,链表)