数据结构---二叉树的基本运算
来源:互联网 发布:windows优化软件知乎 编辑:程序博客网 时间:2024/05/18 17:56
#include<iostream>using namespace std;#define max 100typedef char elemtype;typedef struct node{elemtype data;struct node*lchild;struct node*rchild;}BTnode;void create(BTnode*&b,char *str)//创建二叉树{BTnode *st[max],*p;int top=-1,k,j=0;char ch;b=NULL;ch=str[j];while(ch!='\0'){switch(ch){case'(':top++;st[top]=p;k=1;break;case')':top--;break;case',':k=2;break;default:p=(BTnode*)malloc(sizeof(BTnode));p->data=ch;p->lchild=p->rchild=NULL;if(b==NULL)b=p;else{switch(k){case 1:st[top]->lchild=p;break;case 2:st[top]->rchild=p;break;}}}j++;ch=str[j];}}void destroy(BTnode*&b)//销毁二叉树{if(b!=NULL){destroy(b->lchild);destroy(b->rchild);free(b);}}int BTheight(BTnode*b)//求高度{int lchild,rchild;if(b==NULL)return (0);else{lchild=BTheight(b->lchild);rchild=BTheight(b->rchild);return (lchild>rchild)?(lchild+1):(rchild+1);}}BTnode*find(BTnode*b,elemtype x)//查找结点{BTnode *p;if(b==NULL)return NULL;else if(b->data==x)return b;else{p=find(b->lchild,x);if(p!=NULL)return p;elsereturn find(b->rchild,x);}}//找孩子结点BTnode*LchildNode(BTnode*b){return b->lchild;}BTnode*RchildNode(BTnode*b){return b->rchild;}void display(BTnode*b)//输出二叉树{if(b!=NULL){cout<<b->data;if(b->lchild!=NULL||b->rchild!=NULL){cout<<"(";display(b->lchild);if(b->rchild!=NULL)cout<<",";display(b->rchild);cout<<")";}}}int main(){BTnode*b,*p,*lp,*rp;create(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");cout<<"二叉树B为:";display(b);cout<<endl;cout<<"'H'结点的";p=find(b,'H');if(p!=NULL){lp=LchildNode(p);if(lp!=NULL){cout<<"左孩子为:"<<lp->data;}elsecout<<"无左孩子";rp=RchildNode(p);if(rp!=NULL)cout<<"右孩子为:"<<rp->data;elsecout<<"无右孩子";}cout<<endl;cout<<"二叉树的高度为:";cout<<BTheight(b)<<endl;destroy(b);return 0;}
阅读全文
0 0
- 数据结构学习-二叉树的基本运算
- 数据结构---二叉树的基本运算
- 数据结构 - 树和二叉树的基本运算实现
- 二叉树的基本运算
- 二叉树的基本运算
- 二叉树的基本运算
- 二叉树的基本运算
- 数据结构实验2(二叉链表实现二叉树的基本运算)
- 第7次数据结构上机--树和二叉树的基本运算实现
- 数据结构之自建算法库——二叉树的链式存储及基本运算
- 数据结构之自建算法库——二叉树的链式存储及基本运算
- 数据结构之二叉树的各种运算
- 二叉树的基本运算实验
- 二叉树的基本运算实验
- 遍历二叉树的基本运算
- 二叉树的一些基本运算
- Java实现二叉树的基本运算
- 二叉树各种基本运算的算法
- HIVE的shell脚本模板
- LaTeX如何正确输入引号:双引号“”单引号‘’
- 回调函数的理解
- JDBC_02
- C# 编辑器怎么配置最好
- 数据结构---二叉树的基本运算
- JEECMS——过滤器和拦截器
- 最近常用的几个命令 记录一下
- 顶象加固分析和一点还原
- Android用MediaRecorder实现MPEG4视频监控
- bzoj 4568: [Scoi2016]幸运数字(树上倍增+线性基)
- 在windows下安装windows+Ubuntu16.04双系统(下)
- C++获取文件版本信息
- UE4_C++使Actor属性出现在编辑器中