#include<stdio.h>
#include<stdlib.h>
int WPL=0;
typedef struct b_tree
{
int data;
struct b_tree *left,*right;
}Tree,*B_tree;
void create(B_tree &tree,int data)
{
if(tree==NULL && data !=99 )
{
int num;
tree=(B_tree)malloc(sizeof(Tree));
tree->data=data;
tree->left=NULL;
tree->right=NULL;
}
else
{
if(data>tree->data)
create(tree->right,data);
else
create(tree->left,data);
}
}
void shuchu(B_tree tree)
{
if(tree != NULL)
{
shuchu(tree->left);
printf(" %d ",tree->data);
shuchu(tree->right);
}
else
return;
}
void wpl(B_tree tree,int n)
{
if(tree==NULL)
return;
if(tree->left==NULL && tree->right==NULL)
{
WPL+=tree->data*n;
return;
}
wpl(tree->right,n+1);
wpl(tree->left,n+1);
return ;
}
int main()
{
B_tree root;
int data;
root=NULL;
puts("创建一个二叉排序树:");
scanf("%d",&data);
while(data)
{
create(root,data);
scanf("%d",&data);
}
getchar();
shuchu(root);
wpl(root,0);
printf("wpl=%d",WPL);
return 0;
}
二叉树的创建+中序遍历+WPL的计算
猜你喜欢
转载自blog.csdn.net/yoonaanna/article/details/123434164
今日推荐
周排行