回 帖 发 新 帖 刷新版面

主题:帮忙看看!救命啊.冰天雪地祼体跪求啊

二、2叉树的基本操作
0.建立二叉树
1.先序递归遍历形式
2.先序非递归遍历形式(可选)
3.中序递归遍历形式
4.中序非递归遍历形式(可选)
5.后序递归遍历形式
6.后序非递归遍历形式(可选)
7.计算所有结点个数
8.计算叶子结点个数
9.计算树的深度
10.查到相同的元素
11.推出

下面编的对吗?剩下怎么编啊!
#include<stdio.h>
#include<malloc.h>
#define NULL 0
typedef struct btnode
{
char data;
struct btnode *lchild,*rchild;
}btnode;
btnode *t;
int leaves=0;
btnode *create (btnode *p)
{ char ch;
if ((ch=getchar())=='#')
p=NULL;
else
{
    p=(btnode *)malloc(sizeof(btnode));
    p->data=ch;
    p->lchild=create(p->lchild);
    p->rchild=create(p->rchild);
}
return p;
}
void preorder(struct btnode *p)
{
    if(p!=NULL)
    {printf("%2c",p->data);
    preorder(p->lchild);
    preorder(p->rchild);
    }
}
void inorder(struct btnode *p)
{
    if(p!=NULL)
    {
        inorder(p->lchild);
        printf("%2c",p->data);
        inorder(p->rchild);
    }
}
void lastorder(struct btnode *p)
{if(p!=NULL)
{
    lastorder(p->lchild);
    lastorder(p->rchild);
    printf("%2c",p->data);
}
}
int nodes( struct btnode *p)
{
    int node=0;
    if(p==NULL)
        node=0;
    else
        node=1+nodes(p->lchild)+nodes(p->rchild);
    return(node);
}
int leaf(struct btnode *t)

    if(t)
    {
        leaf(t->lchild);
        if(!(t->lchild||t->rchild))
        leaves++;
        leaf(t->rchild);
    }
    return leaves;
}
void main()
{
    btnode *s,*bt;
    int nodenum,leafnum;
    //clrscr();
    s=NULL;
    printf("please input node:\n");
    bt=create(s);
    printf("preorder:\n");
    preorder(bt);
    printf("\n");
    printf("inorder:\n");
    inorder(bt);
    printf("\n");
    printf("lastorder:\n");
    lastorder(bt);
    printf("\n");
    nodenum=nodes(bt);
    printf("nodenum=%d\n",nodenum);
    leafnum=leaf(bt);
    printf("leafnum=%d\n",leafnum);
}


回复列表 (共1个回复)

沙发

中国源码网上有,编程爱好者网站也有

我来回复

您尚未登录,请登录后再回复。点此登录或注册