数据结构之中序线索二叉树(C++)

本文介绍了中序线索二叉树的目的,包括理解线索的含义和掌握线索二叉树的算法。详细讲解了如何通过线性链表结构实现二叉树,并阐述了线索二叉树的概念。此外,还提供了程序流程图和示例来说明中序遍历线索二叉树的过程。
摘要由CSDN通过智能技术生成

中序线索二叉树

一、 目的:
  1. 理解线索的含义,掌握线索二叉树的算法。
  2. 了解中序线索及其遍历的实现过程。
二、内容:
通过学习同学知道,遍历二叉树是以一定的规则,将二叉树中的结点排列成一个线性序列,得到二叉树的先序序列、中序序列、或者后序序列。这实质是将一个非线性结构进行线性化操作。但是,当以二叉链表作为存储结构时,只能找到左右孩子的信息,而不能找到任意的结点的前驱信息和后继信息。这种信息只能在遍历的动态过程之中才能得到。

试做如下的结点结构:

LCHILD LTAG DATA RTAG RCHILD

其中:

         Link  lchild  域指向结点的左孩子
   LTAG=
         Thread lchild  域指向结点的线性前驱结点

         Link  rchild  域指向结点的右孩子
   RTAG=
         Thread rchild  域指向结点的线性后继结点

以这种结点结构构成的二叉链表作为二叉树的存储结构,叫做线性链表。其中指向结点前驱和后继的指针,叫做线索。加上线索的二叉树叫做线索二叉树。对二叉树进行某种操作使其变为线索二叉树的过程叫做线索化。
在线索二叉树上进行遍历,只要先找到序列的第一个结点,然后依次找结点的后继直到结点的后继为空时为止。

三、程序流程图

在这里插入图片描述

四、程序示例

#include<iostream>
using namespace std;
enum TBT{
   child=0,thread};  //线索二叉树结点的指针是指向孩子还是前驱后继
typedef struct tbt
{
   
        struct tbt* lchild;
        enum TBT ltag;
        char data;
        enum TBT rtag;
        struct tbt* rchild;
}TBTreeNode,*pTBTree;

int createThreadedBinaryTree(pTBTree& root);

void inorderThreadingBinaryTree(const pTBTree& root);  //中序线索化二叉树
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值