求二叉树结点值与对应的层次

W1nds 2011-11-19 05:09:58
先序遍历二叉树
输出其结点值与对应的层次
#include<iostream>
using namespace std;
struct bnode{
char data;
struct bnode *lchild, *rchild;
};
class BiTree
{
public:
BiTree();
int n;
void preorder(){preorder(root);};
void creat(){creat(root);};
private:
bnode *root;
void preorder(bnode *T);
void creat(bnode * &T);
};
BiTree::BiTree()
{
n=0;
root=NULL;
}
void BiTree::creat(bnode * &T)
{
char x;
cin>>x;
if(x=='.') T=NULL;
else
{
T=new bnode;
T->data=x;
creat(T->lchild);
creat(T->rchild);
}
}
void BiTree::preorder(bnode *T)
{
if(T!=NULL) n++;
cout<<"结点:"<<T->data;
cout<<"层次:"<<n<<endl;
preorder(T->lchild);
preorder(T->rchild);
n--;
}
int main()
{
BiTree A;
A.creat();
A.preorder();
return 0;
}
感觉没问题啊
就是没有delete动态申请的节点
输出几个之后会崩溃掉,没有输出完
求指教
...全文
417 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rocktyt 2013-08-07
  • 打赏
  • 举报
回复
领个分~~~~~~~~~~~~~~~~~~
W1nds 2013-08-07
  • 打赏
  • 举报
回复
我就是想结贴领分的。。
大尾巴猫 2013-08-07
  • 打赏
  • 举报
回复
void BiTree::preorder(bnode *T) { if(T!=NULL) n++; cout<<"结点:"<<T->data; cout<<"层次:"<<n<<endl; preorder(T->lchild); preorder(T->rchild); n--; } --------------------------------------------- 改成 void BiTree::preorder(bnode *T) { if(T!=NULL) { //加这个 n++; cout<<"结点:"<<T->data; cout<<"层次:"<<n<<endl; preorder(T->lchild); preorder(T->rchild); } //加这个 n--; } 没仔细看,也没运行,凭直觉改了一下。
  • 打赏
  • 举报
回复
tsakang 2013-08-07
  • 打赏
  • 举报
回复
这帖都过了快两年了!
W1nds 2013-08-07
  • 打赏
  • 举报
回复
有没有人来领分啊

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧