1. 程式人生 > >二叉樹的結構體表示【摘抄自嚴長生老師的網站】

二叉樹的結構體表示【摘抄自嚴長生老師的網站】

採用鏈式儲存

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 int
typedef 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;
}