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