①二叉树如何通过先序遍历创建:二叉树的先序遍历即先访问根节点->左孩子节点->右孩子节点
那么就可以根据这个原理我们就可以访问第一个节点,为第一个节点赋值,如果赋的值为'#'
则将当该节点为空节点,反之赋值成功,根节点生成,我们再通过递归访问其左孩子,那么以
左孩子为参照物,我们又可以将左孩子当做根节点,为左孩子赋值同上,再去递归左孩子的左子树
如果没有左子树 就访问其右子树 每次访问的节点都可以当做该分支上的根节点来看待 这就是
先序遍历的精髓所在
那么实现代码如下
PBiTree Create_BiTree(PBiTree T)
{
//使用先序遍历创建二叉树
char data;
scanf_s("%c",&data);
char flag = getchar();
if(data=='#')
{
T = NULL; //如果输入的值为#则代表该节点为空
}
else
{
T = (PBiTree)malloc(sizeof(BiTree));
T->data = data;
printf("输入%c的左节点",T->data);
T->Lchild = Create_BiTree(T->Lchild); //递归创建左子树
printf("输入%c的右节点",T->data);
T->Rchild = Create_BiTree(T->Rchild);//递归创建右子树
}
return T;
}
② 二叉树的先序遍历 上面提到的先序遍历创建二叉树 基于的就是先序的基础上 所以如果创建
了一颗完整的二叉树 我们就可以判断当前节点是否为空 如果不为空 就访问该节点 接着递归访问
其左孩子节点,右孩子节点
实现代码如下
void PreTraverse(PBiTree T)
{
//先序遍历二叉树
if(T)
{
visit(T);
PreTraverse(T->Lchild); //递归遍历左子树
PreTraverse(T->Rchild); //递归遍历右子树
}
}
③层次遍历:层次遍历就是将一颗数从上到下,从左到右一次遍历下来&#