数据结构—二叉树线索化(线索化的先序、中序、后序遍历)

1.线索二叉树基本概念

  • 二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。
  • 为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息,n个节点的二叉树中含有n+1个空指针域。
  •  试做如下规定:
    • 若结点有左子树,则其lchild域指示其左孩子,否则令lchild域指示其前驱;
    • 若结点有右子树,则其rchild指示其右孩子,否则令rchild域指示其后继。
    • 为避免混淆,尚需改变结点结构,增加两个标志域LTag和RTag。
  • 其中:
    • LTag=0时,lchild域指示结点的左孩子;LTag=1时,lchild域指示结点的前驱。
    • RTag=0时,rchild域指示结点的右孩子;RTag=1时,rchild域指示结点的后继。

2.二叉树的二叉线索类型定义

typedef struct BiThrNode
{
     TelemTpye data;
     struct BiThrNode *lchild,*rchild;      /*左右孩子指针*/
     int LTag,RTag;               /*左右标志*/
}BiThrNode,*BiThrTree;
  • 以这种结点结构构成的二叉链表作为二叉树的存储结构,叫做线索链表
  • 指向结点前驱和后继的指针叫做线索
  • 加上线索的二叉树称之为线索二叉树
  • 对二叉树以某种次序遍历使其变成线索二叉树的过程叫做线索化。
  • 由于线索二叉树构造的实质是将二又链表中的空指针改为指向前驱或后继的线索,而前驱或后继的信息只有在遍历时才能得
  • 13
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值