二叉樹。通過一個示例展示二叉樹是什麼樣子的。
c語言,二叉樹的建立以及中序遍歷。
#include <stdio.h>
#include <string.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=(BiTNode*)malloc(sizeof(BiTNode));
(*T)->lchild->data=2;
(*T)->lchild->lchild=(BiTNode*)malloc(sizeof(BiTNode));
(*T)->lchild->rchild=(BiTNode*)malloc(sizeof(BiTNode));
(*T)->lchild->rchild->data=5;
(*T)->lchild->rchild->lchild=NULL;
(*T)->lchild->rchild->rchild=NULL;
(*T)->rchild->data=3;
(*T)->rchild->lchild=(BiTNode*)malloc(sizeof(BiTNode));
(*T)->rchild->lchild->data=6;
(*T)->rchild->lchild->lchild=NULL;
(*T)->rchild->lchild->rchild=NULL;
(*T)->rchild->rchild=(BiTNode*)malloc(sizeof(BiTNode));
(*T)->rchild->rchild->data=7;
(*T)->rchild->rchild->lchild=NULL;
(*T)->rchild->rchild->rchild=NULL;
(*T)->lchild->lchild->data=4;
(*T)->lchild->lchild->lchild=NULL;
(*T)->lchild->lchild->rchild=NULL;
}
//模擬操作結點元素的函數,輸出結點本身的數值
void displayElem(BiTNode* elem){
printf("%d ",elem->data);
}
//中序遍歷
void INOrderTraverse(BiTree T){
if (T) {
INOrderTraverse(T->lchild);//遍歷左孩子
displayElem(T);//調用操作結點數據的函數方法
INOrderTraverse(T->rchild);//遍歷右孩子
}
//如果結點爲空,返回上一層
return;
}
int main() {
BiTree Tree;
CreateBiTree(&Tree);
printf("中序遍歷算法: \n");
INOrderTraverse(Tree);
printf("\n");
}