qq_22046689 2015-11-04 08:11 采纳率: 0%
浏览 1585
已结题

数据结构问题。二叉树,程序写了编译没错,但没办法运行。求大神看下。

#include
#define MAXLEN 100
using namespace std;
typedef char elementType;
typedef struct lBnode
{elementType data;
struct lBnode *lchild,*rchild;
}Binode,*Bitree;

void create(Bitree &T) //创建二叉链表
{char ch;
cin>>ch;
if(ch=='#')
T=NULL;
else
{T=new Binode;
T->data=ch;
create(T->lchild);
create(T->rchild);}
}

void preorder(Bitree T) //先序遍历
{if(T)
{cout<data;
preorder(T->lchild);
preorder(T->rchild);}
}

void inorder(Bitree T) //中序遍历
{if(T)
{
inorder(T->lchild);
cout<data;
inorder(T->rchild);}
}

void postorder(Bitree T) //后序遍历
{if(T)
{
postorder(T->lchild);
cout<data;
postorder(T->rchild);}
}

int depth(Bitree T) //高度
{int h,hl,hr;
if(!T) h=0;
else
{hl=depth(T->lchild);
hr=depth(T->rchild);
h=hl>hr?hl+1:hr+1;}
return h;}

void countleaf(Bitree T,int &n) //叶子节点个数
{if(T)
{if(!T->lchild&&T->rchild)
n++;
countleaf(T->lchild,n);
countleaf(T->rchild,n);}
}

void main()
{Binode *T;
int n;
create(T);
cout<<"先序遍历序列:";
preorder(T);
cout<<"中序遍历序列:";
inorder(T);
cout<<"后序遍历序列:";
postorder(T);
cout<<"二叉树的深度为:";
depth(T);
cout<<"叶子节点的个数为:";
countleaf(T,n);
}

我就不懂了,为什么创建二叉链表的时候不进入那个子函数,让我输入字符呢?好郁闷。能帮我看看么?

  • 写回答

3条回答 默认 最新

  • Meditator_hkx 2015-11-04 09:24
    关注

    你定义的T可能指向一个不可用的内存空间,赋值为null试试呢~

    评论

报告相同问题?

悬赏问题

  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架