采用链式存储
typedef struct BiTNode{ ???TElemType data;//数据域 ???struct BiTNode *lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;
若需访问父节点,可如下表示
typedef struct BiTNode{ ???TElemType data;//数据域 ???struct BiTNode *lchild,*rchild;//左右孩子指针 ???struct BiTNode *parent;}BiTNode,*BiTree;
以上面左图为例,用上述结构体存储,代码如下
#include <stdio.h>#include <stdlib.h>#define TElemType inttypedef struct BiTNode{ ???TElemType data;//数据域 ???struct BiTNode *lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;void CreateBiTree(BiTree *T){ ???*T=(BiTNode*)malloc(sizeof(BiTNode)); ???(*T)->data=1; ???(*T)->lchild=(BiTNode*)malloc(sizeof(BiTNode)); ???(*T)->rchild=NULL; ???(*T)->lchild->data=2; ???????????????(*T)->lchild->lchild=(BiTNode*)malloc(sizeof(BiTNode)); ???(*T)->lchild->rchild=NULL; ???(*T)->lchild->lchild->data=3; ???(*T)->lchild->lchild->lchild=NULL; ???(*T)->lchild->lchild->rchild=NULL;}int main() { ???BiTree Tree; ???CreateBiTree(&Tree); ???printf("%d",Tree->lchild->lchild->data); ???return 0;}
二叉树的结构体表示【摘抄自严长生老师的网站】
原文地址:https://www.cnblogs.com/wzyuan/p/9943627.html