对线索二叉树进行遍历时,其实就是操作一个双向链表结构。

遍历代码如下:

    /* T指向头结点,头结点左链lchild指向根结点,头结点右链rchild指向中序遍历的*/
    /* 最后一个结点。中序遍历二叉线索链表表示的二叉树T */
     
    Status InOrderTraverse_Thr(BiThrTree T)
    {
        BiThrTree p;
        p = T->lchild;  //p指向根结点
        while ( p != T)  /* 空树或者遍历结束时,p==T*/
        {
            while (p->LTag == Link) //当LTag==0时循环到中序序列第一个结点
                p = p->lchild;
            printf(“%c”, p->data); //显示结点数据
            while( p->RTag == Thread && p->lchild != T )
                {
                    p = p->rchild;
                    printf(“%c”, p->data);
                }
            p = p->rchild;    //p进至其右子树根
        }
        return OK;
    }

线索二叉树充分利用了空指针域的空间,又保证了创建时的一次遍历就可以终生受用前驱后继信息。因此,如果所用的二叉树需经常遍历或者查找结点时需要某种遍历序列中的前驱和后继,那么采用线索二叉链表的结构是非常不错的选择
———————
版权声明:本文为CSDN博主「Zz8474」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zz8474/article/details/90814177

版权声明:本文为aademeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/aademeng/articles/11313985.html