树的创建,与基本操作

来源:互联网 发布:des密码算法 编辑:程序博客网 时间:2024/06/06 09:32
#include<iostream>using namespace std;typedef struct BTNODE{char data;BTNODE * left;BTNODE * right;}BTNODE;typedef struct Stack{BTNODE * data[100];int top;}Stack;void createBtTree(BTNODE * &tree,char * str){Stack stack;BTNODE *p;stack.top=-1;int k,j=0;char ch=str[0];tree=NULL;while(ch!='\0'){switch(ch){case '(':stack.top++;stack.data[stack.top]=p;k=1;break;case ',':k=2;break;case ')':stack.top--;default:p=(BTNODE *)malloc(sizeof(BTNODE));p->data=ch;p->left=NULL;p->right=NULL;if(tree==NULL)tree=p;else{switch(k){case 1:stack.data[stack.top]->left=p;break;case 2:stack.data[stack.top]->right=p;break;}}}j++;ch=str[j];}}void displayTree(BTNODE * tree){if(tree==NULL)cout<<"empty tree"<<endl;else{cout<<tree->data;if(tree->left!=NULL||tree->right!=NULL){cout<<"(";displayTree(tree->left);cout<<",";displayTree(tree->right);cout<<")";}}}BTNODE * findNode(BTNODE * tree,char x){BTNODE *p;if(tree==NULL)return NULL;if(tree->data==x)return tree;else{p=findNode(tree->left,x);if(p==NULL)p=findNode(tree->right,x);elsereturn p;}}int deepth(BTNODE * tree){if(tree==NULL)return 0;int m,n;m=deepth(tree->left)+1;n=deepth(tree->right)+1;return (m>n)?m:n;}int main(){char str[50];cin>>str;BTNODE * tree;createBtTree(tree,str);//displayTree(tree);//BTNODE * node=findNode(tree,'c');cout<<deepth(tree)<<endl;return 0;}

0 0