| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 422 人关注过本帖
标题:求树的结点个数,帮忙看看我的代码,好不好
只看楼主 加入收藏
支风儿
Rank: 2
等 级:论坛游民
帖 子:25
专家分:13
注 册:2013-4-6
结帖率:100%
收藏
 问题点数:0 回复次数:0 
求树的结点个数,帮忙看看我的代码,好不好
#include "stdio.h"
#include "malloc.h"
#define TRUE 1
#define FALSE 0
#define OK  1
#define ERROR  0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int  Status;

typedef int  ElemType;
typedef struct BiTNode{
  ElemType data;
  struct BiTNode *lchild,*rchild;//左右孩子指针
} BiTNode,*BiTree;

Status InsertBiTree(BiTree &T,int e) //插入新结点
{
    if(T==NULL){
        T=(BiTNode *)malloc(sizeof(BiTNode));
        T->data=e;T->lchild=NULL;
        T->rchild=NULL;
        return 1;
    }
    if(T->data<e)
        InsertBiTree(T->rchild,e);
    else
        InsertBiTree(T->lchild,e);
    return 0;
}



Status PrintElement( ElemType e ) {  // 输出元素e的值
    printf("%d ", e );
    return OK;
}// PrintElement


Status PreOrderTraverse( BiTree T, Status(*Visit)(ElemType) )//前序遍历二叉树
 {
    if(T==NULL)  return 0;
    Visit( T->data );
    PreOrderTraverse(T->lchild,Visit);
    PreOrderTraverse(T->rchild,Visit);
    return OK;
} // PreOrderTraverse

Status InOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) //中序遍历二叉树
{
    if(T==NULL)  return 0;
    InOrderTraverse(T->lchild,Visit);
    Visit(T->data);
    InOrderTraverse(T->rchild,Visit);
    return 1;
} // InOrderTraverse

Status PostOrderTraverse( BiTree T, Status(*Visit)(ElemType) )//后序遍历二叉树
 {
    if(T==NULL)  return 0;
    PostOrderTraverse(T->lchild,Visit);
    PostOrderTraverse(T->rchild,Visit);
    Visit(T->data);
    return 1;

} // PostOrderTraverse


int  TreeCount( BiTree T)//树的结点数
{  int num1,num2,s;
   if(T==NULL)
    {s=0;}
    else if(T->lchild==NULL&&T->rchild==NULL)
      {s=1;}
    else
    {
        num1=TreeCount(T->lchild);
        num2=TreeCount(T->rchild);
        s=num1+num2+1;
    }

    return s;


    //补充内容
}





int main()   //主函数
{
    BiTree  T=NULL;
    int e;
    //生成二叉排序树T
    scanf("%d",&e);
    while(e!=-1)
    {InsertBiTree(T,e);
    scanf("%d",&e);}
    //前、中、后序遍历二叉树
    PreOrderTraverse(T,PrintElement);
    printf("\n");
    InOrderTraverse(T,PrintElement);
    printf("\n");
    PostOrderTraverse(T,PrintElement);
    printf("\n");

         //计数并输出
   TreeCount(T);


    return 0;//补充代码
 }//main

搜索更多相关主题的帖子: include return 
2013-05-01 12:13
快速回复:求树的结点个数,帮忙看看我的代码,好不好
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013904 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved