当前位置:首页 > 科学课件 > 正文内容

数据结构 如何创建一棵树,请给出c语言详细代码,谢谢

zhao_admin1年前 (2022-05-19)科学课件52

刚刚回答了一个类似的问题,以下代码供参考:#include stdio.h#include stdlib.h#define OK 1#define ERROR 0#define OVERFLOW -2typedef char TElemType;typedef int Status;typedef struct BiTNode { // 结点结构 TElemType data; struct BiTNode *lchild, *rchild; // 左右孩子指针} BiTNode, *BiTree;//以下是建立二叉树存储结构,空节点输入作为#结束标识Status CreateBiTree(BiTree &T) { //请将该算法补充完整,参见第6章课件算法或课本 char ch; scanf(%c,&ch); if(ch=='#') T=NULL; else{ if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(OVERFLOW); T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return OK;} // CreateBiTreevoid Preorder(BiTree T){ if(T) { printf(%c,T->data); Preorder(T->lchild); Preorder(T->rchild); } } void Inorder(BiTree T){ // 中序遍历二叉树 //请将该算法补充完整,参见第6章课件算法 if(T) { Inorder(T->lchild); printf(%c,T->data); Inorder(T->rchild); }}void Postorder(BiTree T){ // 后序遍历二叉树 //请将该算法补充完整,参见第6章课件算法 if(T) { Postorder(T->lchild); Postorder(T->rchild); printf(%c,T->data); }}//以下是求叶子结点数void CountLeaf(BiTree T,int& count){ //请将该算法补充完整,参见第6章课件算法 if(T){ if((!T->lchild)&&(!T->rchild)) count++; CountLeaf(T->lchild,count); CountLeaf(T->rchild,count); }} //以下是求二叉树的深度int Depth(BiTree T ){ //请将该算法补充完整,参见第6章课件算法 int depthval,depthLeft,depthRight; if(!T) depthval=0; else{ depthLeft = Depth(T->lchild); depthRight = Depth(T->rchild); if(depthLeft>depthRight)depthval = 1+depthLeft; else depthval = 1+depthRight; } return depthval;}void main(){ BiTree T; int s=0,d; printf(n creat of the bitree:n); CreateBiTree(T); printf(n output result of Preorder:n); Preorder(T); CountLeaf(T,s); d=Depth(T); printf(n leaves=%dn,s); printf(n depth=%dn,d);}

# include # include data=ch; T->lchild = CreatBiTree(); T->rchild = CreatBiTree(); return T; } } void PreTravel(BiTree T){ if(T) { printf(%c ,T->data); PreTravel(T->lchild); PreTravel(T->rchild); }} int main(){ BiTree T; printf(先序建立二叉树结点(‘0’表示空):n); T = CreatBiTree(); printf(先序遍历创建的二叉树:n); PreTravel(T); printf(n); return 0;} /*结果:------------------------先序建立二叉树结点(‘0’表示空):ab00c00先序遍历创建的二叉树:a b cPress any key to continue------------------------------*/

扫描二维码推送至手机访问。

版权声明:本文由PPT写作技巧发布,如需转载请注明出处。

本文链接:http://www.ppt3000.com/post/61983.html

分享给朋友:

相关文章