用C语建立一棵二叉树并进行前序遍历。
发布网友
发布时间:2022-05-22 20:29
我来回答
共1个回答
热心网友
时间:2023-10-08 19:17
//以二叉链表作为存储结构,初始化和遍历都要用非递归算法。
#include<iostream>
using
namespace
std;
typedef
int
T;
//template<class
T>
class
list
{
public:
list
*
create_list();
void
bef_list(list
*root);
private:
T
data;
list
*lchild,
*rchild;
};
list
*
list::create_list()
{
list
*temp[100];
list
*s,*root;
int
front=1,rear=0;
T
ch;
root=NULL;
cin>>ch;
while(ch!='*')
//输入值为
*
号结束
{
s=new
list;
s->data=ch;
s->lchild=s->rchild=NULL;
rear++;
temp[rear]=s;
if(rear==1)
root=s;
else
{
if((s!=NULL)&&(temp[front]!=NULL))
{
if(rear%2==0)
temp[front]->lchild=s;
else
temp[front]->rchild=s;
}
if(rear%2==1)
front++;
}
cin>>ch;
}
return
root;
}
void
list::bef_list(list
*root)
{
list
*p,*temp[100];
int
top=0;
p=root;
while((p!=NULL)||(top>0))
{
while(p!=NULL)
{
cout<<p->data<<'\t';
temp[++top]=p;
p=p->lchild;
}
p=temp[top--];
p=p->rchild;
}
}