数据结构学习笔记(五)之 线索树

本文介绍了线索树的概念,通过建立节点之间的前驱和后继关系,使得遍历无需从根节点开始递归。在建立线索树的过程中,利用节点空指针存储前驱和后继节点的地址,并通过额外的flag标志记录指针类型。对于中序、前序和后序遍历,文章分别给出了线索树遍历的策略和递归点的处理,强调理解线索树在不同遍历方式中的应用。
摘要由CSDN通过智能技术生成

原理

        根据遍历节点的顺序来建立关系,建立好后的线索树不需要通过从根开始依次递归来进行遍历,而只需要根据节点之间的关系来进行遍历。

建立

        利用节点上的空指针进行赋值,左指针赋值它的上一个节点的地址,右指针赋值它的下一个节点的地址,增加一个节点成员flag来记录指针记录的是前驱后继或是子节点

例,DABC   中序遍历时,B为根节点

那么D记住A的地址为后继,A记住D的地址为前驱

        A记住B的地址为后继,B记住A的地址为前驱

        以前驱和后继在节点之间传递

        递归点:左节点为空的节点,因为要利用节点的左空节点来储存上级的地址,然后判断上级的右节点是否为空,为空就储存它的下级也就是自己的地址,然后更新上级为自己,去遍历下一个左节点为空指针的节点

nd *pre = NULL;

void buildthread_in(nd *root){
    if(!root)
        return ;

    buildthread_in(root->left);

    if(!root->left){
        root->left = pre;
        root->ltag = THREAD;
    }
    if(pre && !pre->right){
        pre->right = root;
        pre->rtag = THREAD;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值