线索二叉树+习题2学时.pptVIP

  • 3
  • 0
  • 约1.23千字
  • 约 7页
  • 2018-07-11 发布于湖北
  • 举报
知识回顾 遍历二叉树结果是: 求得结点的一个线性序列(前驱 后继), 前驱或后继在二叉树上体现线性关系? 6.3.2 线索二叉树 1. 基本概念 2. 二叉树线索链表存储结构 3. 在线索链表上遍历二叉树(中序为例) 4. 建立线索链表 1. 基本概念 线索:指向前驱或后继的指针 要求:带箭头的虚线,左右分明! 线索链表:含线索的存储结构 线索二叉树:用线索链表作为存储结构,相应的二叉树. 2. 二叉树线索链表存储结构(利用n+1个空链域) 求出下面二叉树的( ? )线索二叉树(链表) 3. 在线索链表上遍历二叉树(中序为例) (1) 中序遍历的第一个结点? (2) 在中序线索化链表中结点的后继? (使用栈?) 作业: * 二叉树 线性结构(前驱.后继) 遍历过程 ? 线索过程 总 结 √ √ rchild rtag data ltag lchild 用C语言描述如下: Typedef enum PointerTag {Link,Thread};//Link=0; Thread=1 Typedef struct BiThrNode { TElemType data; struct BiThrNode *lchild,*rchild; PointerTag ltag,rtag; } BiThrNode ,*BiThrTree ltag=0时,lchild指向左孩子; ltag=1时, lchild指向前驱 rtag=0时,rchild指向右孩子; rtag=1时, rchild指向后继 A B D G C E F H 中序后继二叉树? A B D G C E F H 第一. 按中序遍历二叉树,序列是: D G B A E C H F 第二. 找出没有右孩子的结点,并标出: 第三.在没有右孩子的结点处连上后继 NULL P=T-lchild; While (p!=T) { while (p-ltag=Link) p=p-lchild; if (!visit(p-data)) return ERROR; while ((p-rtag=Thread) (p-rchild!=T)) { p=p-rchild; visit(p-data); } p=p-rchild; } Return OK; 1 0 0 A 0 0 B 1 1 D 1 1 C 1 T

文档评论(0)

1亿VIP精品文档

相关文档