我想转换bios树预先订购c中的双重链接列表

时间:2017-12-11 16:14:46

标签: c tree

给定二叉树(Bt),将其转换为双链接列表(DLL)。节点中的左右指针分别用作转换后的DLL中的前一个和下一个指针。

我想将树更改为双链接列表,而不更改树 我写的代码。但它并没有预先订购(......)。 我怎么能转换它们?
我也尝试用" qunqe" (?);并没有成功,所以我搬到了#34; req" (?)。 我希望你能帮助我。

谢谢。

node* bintree2list(node *roott)
{
    //don't have tree
    if (roott == NULL)
        return roott;
    // Convert
    roott = bintree2listUtil(roott);

    while (roott->left != NULL) // go to the begining to root
        roott = roott->left;
    return (roott);
}

node* bintree2listUtil(node* root)
{
    if (root == NULL)
        return root;

    if (root->left != NULL)
    {
        node*left = bintree2listUtil(root->left);
        for (; left->right != NULL; left = left->right);
        left->right = root;
        root->left = left;
    }

    if (root->right != NULL)
    {
        node* right = bintree2listUtil(root->right);
        for (; right->left != NULL; right = right->left);
        root->right = right;
        right->left = root;

    }
    return root;
}

0 个答案:

没有答案