二叉树的遍历及线索化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛理工大学数据结构课程实验报告
void PreOrderTraverse(BiTree T,Status(*Visit)(TElemType e)){
if(T){
Visit(T->data);//首先访问根结点
PreOrderTraverse(T->lchild,Visit);//然后递归遍历左子树
PreOrderTraverse(T->rchild,Visit);//最后递归遍历右子树}}
//中序遍历时先递归遍历左子树,然后访问根结点,最后递归遍历右子树;后序遍历时先递归遍历左子树,然后递归遍历右子树,最后
访问根结点
3、//先把栈及队列相关操作的头文件包括进来
1)根指针入栈,
2)向左走到左尽头(入栈操作)
3)出栈,访问结点
4)向右走一步,入栈,循环到第二步,直到栈空
//层次遍历时,若树不空,则首先访问根结点,然后,依照其双亲结
点访问的顺序,依次访问它们的左、右孩子结点;
4.首先建立二叉线索存储:包含数据域,左右孩子指针以及左右标志
typedef enum { Link=0,Thread=1 } PointerTag;
typedef struct BiThrNode{
TElemType data;
struct BiThrNode *lchild,*rchild;//左右孩子指针
PointerTag LTag,RTag;//左右标志
}BiThrNode, *BiThrTree;
建立前驱线索和后继线索,并用中序遍历进行中序线索化,然后最
后一个结点线索化
调
试
过
程
及
实
验
结
果
把测试数据放在f:\\file\\data.txt里,测试数据为:1 2 4 0 0 0 3 5 0 0 0
总访问结点是指访问该结点的数据域,弄清楚各个指针所指的类型