文章目录
- 遍历二叉树算法描述
- 先序遍历二叉树的操作定义
- 中序遍历二叉树的操作定义
- 后序遍历二叉树的操作定义
遍历二叉树算法描述
1.遍历定义:顺着某一条搜索路径寻访二叉树中的结点,使得每一个结点均被访问一次,而且仅访问一次(又称周游)。
2.遍历目的:得到树中所有结点的一个线性排列。
3.遍历用途:他是树结构插入,删除,修改,查找和排序算法的前提,是二叉树一切运算的基础和核心。
4.遍历方法:
依次遍历二叉树中的三个组成部分,便是便利了整个二叉树。
假设:L:遍历左子树,D:访问根结点,R:遍历右子树
则遍历整个二叉树方案共有:DLR,LDR,LRD,DRL,RDL,RLD六种。
若规定先左后右,则只有前三种情况:
DLR-----先根序遍历,
LDR-----中根序遍历
LRD-----后根序遍历
先序遍历二叉树的操作定义
若二叉树为空,则空操作,否则:
(1)访问根结点;
(2)先序遍历左子树;
(3)先序遍历右子树;
中序遍历二叉树的操作定义
若二叉树为空,则空操作,否则:
(1)先序遍历左子树;
(2)访问根结点;
(3)先序遍历右子树;
后序遍历二叉树的操作定义
若二叉树为空,则空操作,否则:
(1)先序遍历左子树;
(2)先序遍历右子树;
(3)访问根结点;
例题:已知二叉树的先序和中序序列,构造出相应的二叉树。
这里用到递归,将小的左子树右子树。
int PreOderTraverse(BiTree T) {
if (T == NULL) {
return 1;
}
else {
cout << "输出T的头结点的值:" << T->data;
PreOderTraverse(T->lchild);//递归调用左子树
PreOderTraverse(T->rchild);//递归调用右子树
}
}