/二叉树的结点(链式存储)
typedef struct BiTNode{
ElemType data; //数据域
struct BiTNode*lchild,*rchild //左、右孩子指针
}BiTNode,*BiTree;
如下图进行存放:
所以,一个二叉树有n个结点的话,那总共就会有2n个指针域,n个结点的二叉链表共有n+1个空链域。
struct ElemType{
int value;
};
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode ,*BiTree;
//定义一棵空树
BiTree root = NULL;
//插入根节点
root = (BiTree) malloc(sizeof(BiTNode) ) ;
root->data = {1};
root->lchild = NULL;
root->rchild = NULL;
//插入新结点
BiTNode * p = (BiTNode *) mallos(sizeof(BiTNode) ) ;
p->data = {2};
p->lchild = NULL;
p->rchild = NULL;
root->lchild_ = p; //l作为根节点的左孩子
如果在应用的场景当中经常需要逆向的找到父节点的话,如下代码进行优化:
/二叉树的结点(链式存储)
typedef struct BiTNode{
ElemType data; //数据域
struct BiTNode *lchild,*rchild; //左、右孩子指针
struct BiTNode *parent; //父节点指针
}BiTNode,*BiTree;