首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求二叉树结点值与对应的层次解决方案

2013-08-09 
求二叉树结点值与对应的层次先序遍历二叉树输出其结点值与对应的层次#includeiostreamusing namespace s

求二叉树结点值与对应的层次
先序遍历二叉树
输出其结点值与对应的层次
#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动态申请的节点
输出几个之后会崩溃掉,没有输出完
求指教
[解决办法]
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--;
}

没仔细看,也没运行,凭直觉改了一下。

热点排行