1. 首先是关于二树结点的设计
typedefstruct TreeNode *PtrToNode;
typedef PtrToNode BinTree;
struct TreeNode
{
char data;//结点数据,假设是字符
BinTree left; // 指向左子树
BinTree right; // 指向右子树
};
2. 其次是二叉树创建的模拟
根据先序次序输入二叉树的结点,从而创建一个二叉树(‘-’字符表示树空,当然也可以是其他字符,比如空格);
例如一棵树结构如下,其输入次序为:abd--fe---cg-h--i--
二叉树根据键盘输入字符的创建模拟函数
BinTree binTreeCreate()
{
BinTree t;
char temp;
scanf("%c", &temp);
if ('-' == temp)
t = NULL;
else
{
t = (BinTree)malloc(sizeof(struct TreeNode));
t->data = temp;
t->left = binTreeCreate(t->left);
t->right = binTreeCreate(t->right);
}
return t;
}
3. 递归实现的三种遍历(先序 中序 后序)
3.1 先序遍历二叉树的操作定义为:
若二叉树为空,则空操作;否则:
(1) 访问根结点
(2) 先序遍历左子树
(3) 先序遍历右子树