二叉树基本操作

#include<iostream> using namespace std; typedef char Elemtype; struct BTreeNode{ Elemtype data; BTreeNode *left; BTreeNode *right; }; void InitialBTree(BTreeNode *&BT) { BT=NULL; } void CreatBTree(BTreeNode * &BT,char *a) { BTreeNode *s[10]; int top=-1; BT=NULL; BTreeNode *p; int k;int i=0; while(a[i]) { switch(a[i]){ case ' ':break; case '(':top++;s[top]=p;k=1;break; case ')':top--;break; case ',':k=2;break; default: p=new BTreeNode; p->data=a[i]; p->left=p->right=NULL; if(BT==NULL) BT=p; else { if(k==1)s[top]->left=p; else s[top]->right=p; } } i++; } } bool FindBTree(BTreeNode *&BT,Elemtype item) { if(BT!=NULL) { if(BT->data==item) return true; else { FindBTree(BT->left,item); FindBTree(BT->right,item); } } return false; } void ClearBTree(BTreeNode *&BT) { if(BT!=NULL) { ClearBTree(BT->left); ClearBTree(BT->right); delete BT; BT=NULL; } } void PrintBTree(BTreeNode *BT) { if(BT!=NULL) { cout<<BT->data; if(BT->left!=NULL||BT->right!=NULL) { cout<<"("; PrintBTree(BT->left); if(BT->right!=NULL) cout<<","; PrintBTree(BT->right); cout<<")"; } } } int BTreeDepth(BTreeNode *&BT) { if(BT==NULL) return 0; else { int len1=BTreeDepth(BT->left); int len2=BTreeDepth(BT->right); if(len1>len2) return len1+1; else return len2+1; } } int main() { BTreeNode *t; InitialBTree(t); char a[50]={'A','(','B','(','C',')',',','D','(','E','(','F',',','G',')',',','H','(',',','I',')',')',')'}; CreatBTree(t,a); PrintBTree(t); cout<<endl; cout<<BTreeDepth(t)<<endl; cout<<FindBTree(t,'x')<<endl; cout<<FindBTree(t,'A')<<endl; ClearBTree(t); cout<<BTreeDepth(t)<<endl; PrintBTree(t); return 0; }

转载于:https://www.cnblogs.com/huangkq1989/archive/2010/07/07/2522665.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值