这几天我刚学二叉树,也在网上看了很多案例,但是不知道为什么写出来都是错的,结果今天我收到一篇文章的启示终于写出来了。
一、创建结构体
typedef struct Tree
{
char data;
struct Tree* left;
struct Tree* right;
}Tree;
二、创建二叉树(这里我用的是数组)
Tree* Creat(int s,int n)
{
if(s <= n)
{
Tree* q = new Tree;
q->data = C[s - 1];
q->left = Creat(2 * s, n )
q->right = Creat(2 * s + 1, n);
return q;
}
else
return NULL;
}
这里的有一些变量看主函数,这里不做过多解释。
三、先序遍历
void Xexperience(Tree* S)
{
if(S = NULL)
return;
else
{
cout << S->data ;
Xexperience(S->left);
Xexperience(S->right);
}
}
一个最基本的二叉树的几个重要函数就写出来了。下面就是展示主函数
#include<iostream>
using namespace std;
typedef struct Tree
{
char data;
Tree* left;
Tree* right;
}Tree;
char C[501];
Tree* Creat(int s, int n)
{
if (s <= n)
{
Tree* q = new Tree;
q->data = C[s - 1];
q->left = Creat(2 * s, n);
q->right = Creat(2 * s + 1, n);
return q;
}
else
return NULL;
}
void Xexperience(Tree* S)
{
if (S == NULL)
return;
cout << S->data;
Xexperience(S->left);
Xexperience(S->right);
}
int main()
{
int i = 0;
while (1)
{
cin >> C[i];
if (C[i] == '#')
break;
i++;
}
Tree* q;
q = Creat(1,i);
Xexperience(q);
return 0;
}
(dalao勿喷)