二叉树的链式存储结构
(1)结点类型定义
在二叉树的链接存储中,通常采用的方法是在每个结点中设置三个域:值域、左指针域和右指针域,其结点结构为:
其中data表示值域,用于存储对应的数据元素,left和right分别表示左指针域和右指针域,用以存储左孩子和右孩子结点的存贮位置(即指针)。
二叉树链式存储的结点类型可定义为:
struct BTreeNode { char data; struct BTreeNode* left; struct BTreeNode* right; };
(2)特点
链式存储的二叉树可通过某结点的左、右指针访问到该结点的左、右孩子。
对于图6-9(a)所示的二叉树,其链式存储结构如图6-9(b)所示,其中f为指向树根结点的指针,简称树根指针或根指针。
(3)链式存储的二叉树的空指针域
1.n个结点有2n个指针域
2.n-1个指针域指向n-1个结点
3.空指针域为:2n-(n-1)=n+1,即 n个结点的二叉树共有(n+1)个指针域为空
如对于图(b)所示的二叉链表,共有9个结点和18个指针域,其中8个指针域非空,即指向对应结点,10个指针域为空。