- 链式存储结构
用data 表示值域,用于存储对应的数据元素,lchild 和 rchild分别表示左指针域和右指针域,分别用于存储左孩子结点和右孩子结点的存储地址。这种链式存储结构通常简称为二叉链(binary linked list)。二叉链中通过根结点指针 b来唯一标识整个存储结构,称为二叉树b。
typedef struct BTNode
{
int data;
struct BTNode* lChild;
struct BTNode* rChild;
}BTNode;
A1->lChild=A2;
A1->rChild = A3;
A2->lChild = A4;
A2->rChild = NULL;
A3->lChild=A5;
A3->rChild = NULL;
- 二叉链表存储结构(树的孩子兄弟存储结构)
typedef struct BTNode
{
int data;
struct BTNode* child;
struct BTNode* sibling;
}BTNode;
链接:
A1->child= A2;
A1->sibling = NULL;
A2->sibling = A3;
A3->sibling =A4;
A4->sibling = NULL;
取A1孩子结点A3:
A1->child->sibling
4. 二叉树与树、森林之间的转换
- 森林、树转化为二叉树
- 树中所有相邻兄弟之间加一条连线;
- 对树中的每个结点只保留它与长子之间的连线,删除与其他孩子之间的连线;
- 以树的根结点为轴心,将整棵树顺时针转动45°,使之结构层次分明。