欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/3/11 编程问答 26 豆豆
生活随笔 收集整理的这篇文章主要介绍了 树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

二叉树的基本操作(源代码)

#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;

}//求树的节点数

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);

}

总结

以上是生活随笔为你收集整理的树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。