标题:二叉树的高度和结点没显示,求怎么解决????
只看楼主
赤足伙计
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-14
结帖率:100%
已结贴  问题点数:10 回复次数:2 
二叉树的高度和结点没显示,求怎么解决????
#include <stdio.h>
#include <Stdlib.h>
#include <string.h>
#include<iostream>
using namespace std;
typedef struct Node
 {
  char data;
   struct Node *LeftChild;
   struct Node *RightChild;
 }BiTNode;

void Initiate(BiTNode **root)
{
  *root=(BiTNode *)malloc(sizeof(BiTNode));
  (*root)->LeftChild=NULL;
  (*root)->RightChild=NULL;
}
void Visit(char item)
 {
  printf("%c",item);
  }
  
void PreOrder(BiTNode *T,void Visit(char item))
  {//先序
   if(T!=NULL)
   {
    Visit(T->data);
    PreOrder(T->LeftChild,Visit);
    PreOrder(T->RightChild,Visit);
   }
}

void InOrder(BiTNode *T,void Visit(char item))
{//中序
 if(T!=NULL)
   {
      InOrder(T->LeftChild,Visit);
    Visit(T->data);
    InOrder(T->RightChild,Visit);
    }
}

void PostOrder(BiTNode *T,void Visit(char item))
 {//后序
   if(T!=NULL)
    {
        PostOrder(T->LeftChild,Visit);
        PostOrder(T->RightChild,Visit);
        Visit(T->data);
    }
}

BiTNode* CreatTree(char *pre,char *in,int len)
{//创建二叉树
  char *p,*i;
  int j=0; //j表示根节点在中序中的位置
   BiTNode  *T;
   Initiate(&T);
   T->data=pre[0];
   if(len==0)return NULL;
               
 while(j<len)
  {
  if(in[j]==pre[0])break;
  j++;
  }
    p = pre+1;             //确定左子树的先序序列指针
    i= in;               //确定左子树的中序序列指针
    T->LeftChild=CreatTree(p,i,j);  //递归生成左子树
    p = pre+j+1;               //确定右子树的先序序列指针
    i = in+j+1;           //确定右子树的中序序列指针
    T->RightChild=CreatTree (p,i,len-j-1);//递归生成右子树
       return T;
}

int gethigh(BiTNode *T)
{
    int m,l;
    if(!T)
    return 0;
    else
{  m=gethigh(T->LeftChild);
   l=gethigh(T->RightChild);
    return (m>l)?(m+1):(l+1);
}
}

int coutnode(BiTNode *T)
{
    int a;
    if(!T)
    return 0;
    else
    a=coutnode(T->LeftChild)+coutnode(T->RightChild)+1;   
    return a;
}

int main()
{
    BiTNode *T;
    int len;
     char Pre[100];
     char In[100];
    printf("请输入前序序列:");
    scanf("%s",&Pre);
    printf("请输入中序序列:");
    scanf("%s",&In);
    len=strlen(In);
    Initiate(&T);
    T=CreatTree(Pre,In,len);
    printf("二叉树构造成功!\n");
    printf("\n后序序列:");
    PostOrder(T,Visit);
    printf("\n");
    printf("树的高度:\n");
    gethigh(T);
     printf("树的结点:\n");
     coutnode(T);
    printf("\n");
    return 0;
}
搜索更多相关主题的帖子: void include 二叉树 
2012-12-14 23:22
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
得分:10 
回复 楼主 赤足伙计
没有显示出来,是因为你获取了树的高度和树的结点,但没有将获取的值打印出来啊。

显示树的高度和树的结点的代码修改为:
printf("树的高度:%d\n", gethigh(T));
printf("树的结点:%d\n", coutnode(T));
2012-12-15 10:42
赤足伙计
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-14
得分:0 
回复 2楼 crystall
噢噢噢噢
2012-12-15 11:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-391314-1-1.html




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

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