二叉树的(先,中,后)序建树,线索化及遍历(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39956356/article/details/80141837

二叉树的(先,中,后)序的建树

核心递归访问顺序
(1):访问顺序
访问顺序
(2):反复递归调用

先序建树:按照反访问顺序

先序访问顺序
先序建树

//先序创建树
Status CreatPreBiThreadTree(BiThrTree &T, char TreeArray[])
{
    char ch = TreeArray[N];
        N++;
    if ('$' == ch) {
        T = NULL;
        return 0;
    }
    else{
        if (!(T = (BiThrNode *)malloc(sizeof(BiThrNode))))
            return OVERFLOW;
        T->data = ch;
        printf("%5c", T->data);
        T->LTag = Link;
        CreatPreBiThreadTree(T->lchild, TreeArray);
        T->RTag = Link;
        CreatPreBiThreadTree(T->rchild, TreeArray);
    }
    return OK;
}

中序建树:按照反访问顺序

中序访问顺序
中序建树

//中序创建树
Status CreatInBiThreadTree(BiThrTree &T, char TreeArray[])
{

    char ch = TreeArray[N2];
        N2++;
    if ('$' == ch) {
        T = NULL;
        return 0;
    }
    else {
        if (!(T = (BiThrTree)malloc(sizeof(BiThrNode))))
            return OVERFLOW;
        T->LTag = Link;
        CreatInBiThreadTree(T->lchild, TreeArray);
        T->data = ch;
        printf("%5c", T->data);
        T->RTag = Link;
        CreatInBiThreadTree(T->rchild, TreeArray);
    }
    return OK;
}

后序建树:按照反访问顺序,后序遍历需要知道双亲节点,所以要用带双亲节点的三叉料表

后序访问顺序
后续建树

//后序创建树
Status CreatPostBiThreadTree(BiThrTree &T, char TreeArray[], BiThrTree &parent)
{
    char ch = TreeArray[N3];
        N3++;
    if ('$' == ch) {
        T = NULL;
        return 0;
    }
    else {
        if (!(T = (BiThrNode *)malloc(sizeof(BiThrNode))))
            return OVERFLOW;
        T->Parent = parent;
        T->LTag = Link;
        CreatPostBiThreadTree(T->lchild, TreeArray, T);
        T->RTag = Link;
        CreatPostBiThreadTree(T->rchild, TreeArray, T);
        T->data = ch;
        printf("%5c", T->data);
    }
    return OK;
}

注意:接下来的两篇文章重点就是二叉数的三种线索化和对应的遍历,由于篇幅的问题及处理方式的不同,分成了两章内容
1:(先序,中序)线索化及遍历,这两个相识度很高,所以放在了一起。
2: 后序线索化及遍历,要使用带双亲的三叉链表,单独写。

(先序,中序)线索化及遍历:

https://blog.csdn.net/weixin_39956356/article/details/80142461

后序线索化及遍历:

https://blog.csdn.net/weixin_39956356/article/details/80144113

线索二叉树的基本知识:

https://blog.csdn.net/weixin_39956356/article/details/80141980

猜你喜欢

转载自blog.csdn.net/weixin_39956356/article/details/80141837