1.树的定义:
1.2结点的分类:
1.3结点间的关系:
1.4树的其他概念:
2.二叉树:
2.1特点:
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<stdio.h>
using namespace std;
//数据类型抽象
typedef char ElemType;
typedef struct BiTNode
{
ElemType data; //数据域
struct BiTNode *lchild, *rchild; //定义左子树和右子树
}BiTNode,*BiTree;
//创建二叉树
int CreateBiTree(BiTree &T)
{
char ch;
printf("请输入:\n");
scanf("%s", &ch);
if (ch == '#')
T = NULL;
else
{
T = (BiTNode*)malloc(sizeof(BiTNode));
if (!T)
return 0;
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 1;
}
//访问函数
int PrintElement(ElemType e)
{
printf("%c \n", e);
return 1;
}
//前序遍历
void PreOrderTraverse(BiTree T)
{
if (T == NULL)
return;
PrintElement(T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
//zhong序遍历
void InOrderTraverse(BiTree T)
{
if (T == NULL)
return;
InOrderTraverse(T->lchild);
PrintElement(T->data);
InOrderTraverse(T->rchild);
}
//后序遍历
void PostOrderTraverse(BiTree T)
{
if (T == NULL)
return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
PrintElement(T->data);
}
void main()
{
//构造一棵树
BiTree T = NULL;
CreateBiTree(T);
printf("采用前序遍历整个表:\n");
PreOrderTraverse(T);
printf("采用中序遍历整个表:\n");
InOrderTraverse(T);
printf("采用后序遍历整个表:\n");
PostOrderTraverse(T);
system("pause");
}
参考资料:
《大话数据结构》