以二叉链表作为存储结构,初始化和遍历都要用非递归算法。
用C语建立一棵二叉树并进行前序遍历。
- 提问者网友:人生佛魔见
- 2021-06-05 08:23
- 五星知识达人网友:酒醒三更
- 2021-06-05 09:54
//以二叉链表作为存储结构,初始化和遍历都要用非递归算法。
#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;
}
}