Creation of binary tree + in-order traversal + calculation of WPL

#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;    
}

 

Guess you like

Origin blog.csdn.net/yoonaanna/article/details/123434164