线序遍历 根左右 中序遍历 左跟右 后序遍历 左右根

建立二叉树

一个结构体 含有数据 左子树 右子树

struct Node
{

char c;

Node*lNext;

Node*rNext;

}

只有线序遍历。但是都差不多的。。

完整马 。开始注释

#include <iostream>
using namespace std;
int num = 0;
struct Node
{
char o;
Node*lNext;
Node*rNext;

};
void create(Node*&p);//声明函数
void create(Node*&p)//这个地方很关键 必须引用。才能正确的分配内存 认真理解传参博客有理解。
{
char c;
cin >> c;
if (c == '#')
p = nullptr;//#代表结束
else
{
p = new Node;//如果你不是引用p实际上不是那个参数那个东西 是他自己新建临时指针。指向你参数那个东西 new会失败
p->o = c;
create(p->lNext);建立左子树
create(p->rNext);建立右子树
}
}
void D(Node*p)打印
{
//Node *d = p;
if (p)
{
cout << p->o << endl;
D(p->lNext);
D(p->rNext);
}

}
int main()
{
Node *head=new Node;
create(head);
D(head);
//delete head;
system("pause");
}