为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 二叉树叶子深度销毁清空(精)

二叉树叶子深度销毁清空(精)

2017-11-26 6页 doc 19KB 24阅读

用户头像

is_180829

暂无简介

举报
二叉树叶子深度销毁清空(精)二叉树叶子深度销毁清空(精) #include #include using std:: cout; using std:: cin; using std:: endl; using std:: ends; typedef struct { char c; }elemtype; // 数据类型 typedef struct node { elemtype data; struct node * lchild,*rchild; }binode,*bitree; //二叉树结构 //二叉树的相关操作 in...
二叉树叶子深度销毁清空(精)
二叉树叶子深度销毁清空(精) #include #include using std:: cout; using std:: cin; using std:: endl; using std:: ends; typedef struct { char c; }elemtype; // 数据类型 typedef struct node { elemtype data; struct node * lchild,*rchild; }binode,*bitree; //二叉树结构 //二叉树的相关操作 int Creat_tree(bitree &T);//创建叉树 void destory_tree(bitree &T); //销毁数 void clear_tree(bitree &T); //清空树 void Inordertraverse(bitree T);//中序遍历二叉树 void preordertraverse(bitree T);//先序遍历二叉树 void postordertraverse(bitree T);//后序遍历二叉树 int depth_tree(bitree T);//求二叉树的深度 int total_tree(bitree T);//求二叉树的节点数 int leaf_node(bitree T); //求二叉树的叶子节点 int Creat_tree(bitree &T) { char s; cin>>s; if('*'==s) T=NULL; else { T=(binode *)malloc(sizeof(binode)); if(!T) return 0; T->data.c=s; Creat_tree(T->lchild); Creat_tree(T->rchild); } return 1; } void preordertraverse(bitree T) { if(T) { cout<data.c<lchild); preordertraverse(T->rchild); } } void Inordertraverse(bitree T) { if(T) { Inordertraverse(T->lchild); cout<data.c<rchild); } } void postordertraverse(bitree T) { if(T) { postordertraverse(T->lchild); postordertraverse(T->rchild); cout<data.c<lchild); Rdp=depth_tree(T->rchild); maxdp=(Ldp>Rdp)?Ldp:Rdp; return (maxdp+1); } } int count=0; int leaf_node(bitree T) { if(T) { leaf_node(T->lchild); leaf_node(T->rchild); if(T->lchild==NULL && T->rchild==NULL) count++; } return count; } int sum=0; int total_tree(bitree T) { if(T) { sum++; total_tree(T->lchild); total_tree(T->rchild); } return sum; } void destory_tree(bitree &T) { if(T) { destory_tree(T->lchild); destory_tree(T->rchild); free(T); T=NULL; } } void clear_tree(bitree &T) { if(T) { T->lchild==NULL; T->rchild==NULL; } } int main() { bitree T; cout<<"操作说明:\n"<<"1.创建叉树\n"<<"2.先序遍历二叉树\n"; cout<<"3.中序遍历二叉树\n"<<"4.后序遍历二叉树\n"<<"5.求二叉树的深度\n"; cout<<"6.求二叉树的叶子节点数\n"<<"7.求二叉树的节点数\n"; cout<<"8.销毁树\n"<<"9.将树清空为空树\n"; cout<<"10.退出操作\n"; cout<<"-----------------------欢迎使用~--------------------\n"; int n; while((cin>>n)) { if(1==n) {cout<<"请输入你要创建的二叉树:\n";Creat_tree(T);} else if(2==n) preordertraverse(T); else if(3==n) Inordertraverse(T); else if(4==n) postordertraverse(T); else if(5==n) printf("这个树的深度:%d层\n",depth_tree(T)); else if(6==n) printf("有%d个叶子节点\n",leaf_node(T)); else if(7==n) printf("这个棵树总共有%d个节点\n",total_tree(T)); else if(8==n) destory_tree(T); else if(9==n) clear_tree(T); else if(10==n) {printf("感谢您的使用~再见\n"); break;} else cout<<"对不起!你输入有误!请重新操作........!"; cout<
/
本文档为【二叉树叶子深度销毁清空(精)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索