二叉树

include <stdio.h>

include <stdlib.h>

include <string.h>

int n;
struct node
{
char data;
node left,right;
};
node *createTree1(char a[])
{
node root;
if(a[n]==',')
{
n++;
return NULL;
}
else
{
root=(node
)malloc(sizeof(node));
root->data=a[n];
n++;
root->left=createTree1(a);
root->right=createTree1(a);
}
return root;
}
void pre(node *root)
{
if(root)
{
printf("%c",root->data);
pre(root->left);
pre(root->right);
}
}
void mid(node *root)
{
if(root)
{
mid(root->left);
printf("%c",root->data);
mid(root->right);
}
}
void post(node *root)
{
if(root)
{
post(root->left);
post(root->right);
printf("%c",root->data);
}
}
int treelevel(node *root,int level)
{
if(rootNULL)return 0;
if(level
0)
{
printf("%c",root->data);
return 1;
}
return treelevel(root->left,level-1)+treelevel(root->right,level-1);
}
void level(node *root)
{
int i=0;
while(treelevel(root,i))i++;
}
int de(node *root)
{
int dl,dr,deep;
if(rootNULL)return 0;
dl=de(root->left);
dr=de(root->right);
deep=1+(dl>dr?dl:dr);
return deep;
}
int le(node *root)
{
if(!root)return 0;
else if(root->left
NULL&&root->right==NULL)return 1;
else return le(root->left)+le(root->right);
}
int main()
{
char a[55];
while(~scanf("%s",a))
{
n=0;
node *root;
root=createTree1(a);
pre(root);
printf("\n");
mid(root);
printf("\n");
post(root);
printf("\n");
level(root);
printf("\n");
int deep=de(root);
printf("%d\n",deep);
int leves=le(root);
printf("%d\n",leves);
}
return 0;
}

posted @ 2020-11-22 22:58  代码画师  阅读(90)  评论(0)    收藏  举报