之前写了一篇关于二叉树的概要介绍,里面包括了二叉树的创建等相关代码,这一篇文章主要来详细的对二叉树的创建讲解一下~
参考之前的文章二叉树的概要介绍
首先,定义一下关于二叉树的结点信息
typedef struct BtNode
{
struct BtNode* leftchild;
struct BtNode* rightchild;
ElemType data;
}BtNode, *BinaryTree;
这是篇文章所要分析的树
接下来进入正题,我们首先为大家呈现的是
一、二叉数的递归遍历
1、二叉树的递归中序遍历
void InOder(struct BtNode* p)
{
if (p != NULL)
{
InOder(p->leftchild);
printf("%c", p->data);
InOder(p->rightchild);
}
}
2、二叉树的递归先序遍历
void PreOder(struct BtNode* p)
{
if (p != NULL)
{
printf("%c", p->data);
PreOder(p->leftchild);
PreOder(p->rightchild);
}
}
3、二叉数的递归后续遍历
void LsOder(struct BtNode* p)
{
if (p != NULL)
{
LsOder(p->leftchild);
LsOder(p->rightchild);
printf("%c", p->data);
}
}
实现原理:
首先进入循环,递归进入结点A的左子树B;再递归进入结点B的左子树C;结点C的左子树为空,则打印结点C,回退到结点B,打印B;接着递归进入结点B的右子树D