二叉树的恢复实现

本文介绍了如何根据二叉树的前序、中序和后序序列来恢复二叉树的结构,详细讲解了通过前序和中序,以及后序和中序序列进行恢复的步骤,重点在于如何确定根节点并递归构建左右子树。
摘要由CSDN通过智能技术生成

根据二叉树的前中后序列恢复二叉树的结构

    char* VLR="ABCDEFGH";
    char* LVR="CBEDFAGH";
    char* LRV="CEFDBHGA";
    int n=strlen(VLR);
1.根据前序和中序恢复二叉树:
void create1(PNODE p,char*VLR,char*LVR,int len)
{

    if(len!=0)
    {
          int k=0;
          while(VLR[0]!=LVR[k])
                {
                    k++;
                }
            p=(PNODE)malloc(sizeof(NODE));
            p->data=VLR[0];
            create1(p->lchild,VLR+1,LVR,k);
            create1(p->rchild,VLR+k+1,LVR+k+1,len-k-1);


    }
}
2.根据后序和中序恢复二叉树:
void create2(PNODE p,char*LRV,char*LVR,int len)
{
    if(len!=0)
    {
        int k=0;
        while(LRV[len-1]!=LVR[k])
        {
            k++;
        }
         p=(PNODE)malloc(sizeof(NODE));
         p->data=LVR[k];
         create2(p->lchild,LRV,LVR,k);
         create2(p->rchild,LRV+k,LVR+k+1,len-k-1);
    }
}
总结
  • 主要是根据前序和后序对中序进行划分,找到根节点的位置。之后找到剩余的右子树和左子树在前中后序的范围进行递归。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值