二叉树的遍历及线索化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

总访问结点是指访问该结点的数据域,弄清楚各个指针所指的类型

相关文档
最新文档