树的定义:

树的定义是递归的,树的定义又用到了自身

树的根节点没有前驱,除了根节点以外,其他所有的结点有且只有一个前驱

树中的所有结点可以有0个或多个后驱


二叉树的定义:

是一种特殊的树形结构,每个结点最多只有两个子树


有前中后遍历和层级遍历的方法

前序:根->左->右

中序:左->根->右

后序:左->右->根

#include<stdio.h>
#include<Stdlib.h>


typedef struct TreeNode
{
char data;
struct TreeNode* lchild, * rchild;
}TreeNode;

void creatTree(TreeNode** T)
{
char ch;
scanf_s("%c", &ch);
//@ 表示此处无结点,为虚结点
if (ch == '@') {
*T = NULL;
}
else
{
*T = (TreeNode*)malloc(sizeof(TreeNode));
(*T)->data = ch;
//创建左子树,进行递归
creatTree(&((*T)->lchild));
//创建右子树,进行递归
creatTree(&((*T)->rchild));
}
}
//前序遍历
void preOread(TreeNode* T)
{
if (T)
{
printf("%c", T->data);
preOread(T->lchild);
preOread(T->rchild);
}
}
//中序
void midOread(TreeNode* T)
{
if (T)
{
midOread(T->lchild);
printf("%c", T->data);
midOread(T->rchild);
}
}
//后序
void posOread(TreeNode* T)
{
if (T)
{
posOread(T->lchild);
posOread(T->rchild);
printf("%c", T->data);

}
}

int main()
{
TreeNode* T = NULL;
creatTree(&T);
preOread(T);
return 0;
}


层次遍历依据队的数据结构实现