线索排序树

Posted 绿水白川

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线索排序树相关的知识,希望对你有一定的参考价值。

struct ThreadNode{
    int data;
    ThreadNode *lchild, *rchild;
    int ltag, rtag;
};

void InThread(ThreadNode *p, ThreadNode *pre){
    if(p != NULL){
        InThread(p->lchild, pre);
        if(p->lchild == NULL){
            p->lchild = pre;
            p->ltag = 1;
        }
        if(pre != NULL && pre->rchild == NULL){
            pre->rchild = p;
            pre->rtag = 1;
        }
        pre = p;
        InThread(p->rchild, pre);
    }
}

void CreateInThread(ThreadNode *T){
    ThreadNode *pre = NULL;
    if(T != NULL){
        InThread(T, pre);
        pre->rchild = NULL;
        pre->rtag = 1;
    }
}

void InPre(ThreadNode *T, ThreadNode* pre){
    if(T->ltag == 1) pre = T->lchild;
    else{
        ThreadNode* p;
        for(p = T->lchild; p->rtag == 0; p = p->rchild);
        pre = p;
    }
}

void InNext(ThreadNode *T, ThreadNode* next){
    if(T->rtag == 1) next = T->rchild;
    else{
        ThreadNode* p;
        for(p = T->rchild; p->ltag == 0; p = p->lchild);
        next = p;
    }
}

 

以上是关于线索排序树的主要内容,如果未能解决你的问题,请参考以下文章

线索排序树

超强二叉树解析.必收藏!(数组,链表实现,8种遍历方法,前,中,后序线索化二叉树及其遍历)---风之java

数据结构与算法:树 堆排序

数据结构与算法:树 堆排序

数据结构与算法:树 二叉排序树(BST)

数据结构与算法:树 二叉排序树(BST)