原博客:https://blog.csdn.net/libingbojava/article/details/81080036 包含前中后序遍历,这里我只写了构建,方便查看
定义二叉树的结构:
typedef struct BiTNode
{
char data;
struct BiTNode *lchild , *rchild; //左右孩子指针
} BiTNode , *BiTree;
需要注意:如果不使用typedef ,那么定义结构变量时必须每次加上struct,也就是写成 struct BiTNode 变量名。而这里就可以直接定义成:BiTNode 变量名。 *BiTree 是一个指向结构体自己的指针,也就是等价于:typedef struct BiTNode *BiTree ;
接下来创建二叉树:
bool CreateBiTree(BiTree &T)
{
//按先序序列输入二叉树中的节点值,空格代表空字符
char key; //接收输入的字符
cout<<"先序输入字符"<<endl;
cin>>key;
//输入0代表该节点为叶子节点,结束插入
if(key == '0') T = NULL;
else
{
//如果空间分配失败
if(! (T = (BiTNode*) malloc (sizeof(BiTNode)))) return false;
T->data = key;
CreateBiTree(T->lchild) ; //构造左子树
CreateBiTree(T->rchild) ;//构造右子树
}
return true;
}
测试:
int main()
{
BiTree T;
CreateBiTree(T);
}
输入的顺序为:6 5 3 0 0 4 0 0 7 0 0
构建出的二叉树如下: