日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)

發(fā)布時(shí)間:2025/3/11 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

二叉樹的基本操作(源代碼)

#include "stdio.h"

#include "malloc.h"

#define MAX 100

typedef struct node{

int date;

struct node *lchild,*rchild;

}bitnode,*bitree;

bitree createbitree(bitree bt){

int m;

printf("m=");

scanf("%d",&m);

if(m==-1)

bt=NULL;

else{

bt=(bitnode *)malloc(sizeof(bitnode));

bt->date=m;

bt->lchild=createbitree(bt->lchild);

bt->rchild=createbitree(bt->rchild);

}

return bt;

}//樹的建立

void leveltraverse(bitree bt){

bitree queue[MAX],p=bt;

int rear=0,front=0;

if(p!=NULL){

queue[++rear]=p;

while(frontdate);

if(p->lchild!=NULL)

queue[++rear]=p->lchild;

if(p->rchild!=NULL)

queue[++rear]=p->rchild;

}

}

}//樹的層次遍歷

void preordertraverse(bitree bt){

if(bt!=NULL){

printf("%d\t",bt->date);

preordertraverse(bt->lchild);

preordertraverse(bt->rchild);

}

}//樹的先序遍歷

void inordertraverse(bitree bt){

if(bt!=NULL){

inordertraverse(bt->lchild);

printf("%d\t",bt->date);

inordertraverse(bt->rchild);

}

}//樹的中序遍歷

void postordertraverse(bitree bt){

if(bt!=NULL){

postordertraverse(bt->lchild);

postordertraverse(bt->rchild);

printf("%d\t",bt->date);

}

}//樹的后序遍歷

int bitreedepth(bitree bt){

int h,lh,rh;

if(bt==NULL)

h=0;

else{

lh=bitreedepth(bt->lchild);

rh=bitreedepth(bt->rchild);

if(lh>=rh)

h=lh+1;

else

h=rh+1;

}

return h;

}//求樹的深度

int bitreeleaf(bitree bt){

int m=0;

if(!bt)

return 0;

else if(bt->lchild==NULL&&bt->rchild==NULL)

return 1;

m+=bitreeleaf(bt->lchild)+bitreeleaf(bt->rchild);

return m;

}//求樹的葉子樹

int countbitreenode(bitree bt){

if(!bt)

return 0;

else

return countbitreenode(bt->lchild)+countbitreenode(bt->rchild)+1;

}//求樹的節(jié)點(diǎn)數(shù)

void OperateBitree(bitree bt){

printf("\n");

printf("The level traversal of the bitree is:\n\t");

leveltraverse(bt);

printf("\n\n");

printf("The preorder traversal of the bitree is:\n\t");

preordertraverse(bt);

printf("\n\n");

printf("The inorder traversal of the bitree is:\n\t");

inordertraverse(bt);

printf("\n\n");

printf("The postorder traversal of the bitree is:\n\t");

postordertraverse(bt);

printf("\n\n");

printf("The number of the bitreenode is %d.\n",countbitreenode(bt));

printf("The depth of the bitree is %d.\n",bitreedepth(bt));

printf("The number of the leaves of the bitree is %d.\n\n",bitreeleaf(bt));

}//樹的基本操作

void main(){

bitree bt;

bt=createbitree(bt);

OperateBitree(bt);

}

總結(jié)

以上是生活随笔為你收集整理的树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。