已知一颗二叉树的前序和中序序列,唯一的确定一颗二叉树

原创 2006年06月19日 15:51:00

已知一颗二叉树的前序和中序序列,唯一的确定一颗二叉树,由此构造二叉树的递归算法。

设前序序列和中序序列分别存放两个一维数组,pre(1,n)和ind(1,n),按前序序列pre(i,j)和中序序列ind(u,v)递归构造二叉树,其根结点指针为s。

typedef  struct  bnode
{ Elemtype data;
   struct bnode *left,*right;
 }btree;
btree *bintree(int i,int j,int u,int v)
{
   int k,l;
   btree *head,*s;
   head=NULL;
   if(j>=i)
   {
       head=new btree; //建立根结点
       head->data=pre[i];
       k=u;
       while(ind[k]!=pre[i]) k++//在中序序列中查找根结点
       l=i+k-u;//l为左子树中最右下结点在前序序列中的位置
       if(k==u) //左子树为空
        head->left=NULL;
       else
        {
            s=bintree(i+1,l,u,k-1);//构造左子树
            head->left=s;
        }
      if(k==v)//右子树为空
        head->right=NULL;
      else
        {
            s=bintree(l+1,j,k+1,v);//构造右子树
            head->right=s;
        }            
   }      
    
return head;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

已知二叉树的中序和前序序列(或后序)求解树

http://www.cnblogs.com/bmrs/archive/2010/08/19/SloveTree.html 这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一...

【二叉树】已知二叉树前序序列和中序序列,重建唯一二叉树

样例:

已知一颗二叉树S的前序遍历和中序遍历序列,请编程输出二叉树S的后续遍历序列。

举例:pred[]/先序:A、B、D、E、C、F、G; inod[]/中序:D、B、E、A、C、G、F; 后序遍历序列是:D、E、B、G、F、C、A代码如下:#include #include u...

noip2003 加分二叉树 (树形dp+分治法,已知中序,输出前序)

P1100加分二叉树 Accepted 标签:动态规划 树形DPNOIP提高组2003 描述 设一个n个节点的二叉树tr...

已知二叉树的前序和中序,求后序

以前在学习数据结构的时候,经常会有一道选择题,已知二叉树的前序和中序遍历,求二叉树的后序遍历。后来想到用编程的方法来实现它,限于水平有限,一直无从下手。后来,受另一个问题启发,才想出其解法:    ...

已知二叉树的中序和后序求前序

例子,后序遍历为 gbdehfca,中序遍历为 dgbaechf 后序遍历中的最后一个元素是根节点,a,然后查找中序中a的位置 把中序遍历分成 dgb a echf,而因为节点个数要对应 ...

[ZZ] 二叉树:已知前序中序求后序结果的问题

讨论本题:题目描述:若某二叉树的前遍历访问顺序是序abdgcefh,中序遍历顺序是dgbaechf,则后序遍历的访问顺序是什么。若某二叉树的前遍历访问顺序是序abdgcefh,中序遍历顺序是dgbae...

根据二叉树的中序遍序列和后续遍历序列还原一颗二叉树

数据结构作业 采用C++完成 /**题目要求 已知二叉树的中序遍历序列 char ino[]以及后序遍历序列char pst[],请用算法生成该二叉树(用二叉链表的形式存储)*/ #inclu...

已知中序,前序,重组二叉树

TreeNode类 public class TreeNode { int val; TreeNode left; TreeNode right; T...

6.3.3 二叉树重建 已知前序和中序求后序

在一棵二叉树总,前序遍历结果为:DBACEGF,中序遍历结果为 ABCDEFG,求后序遍历结果。 我们知道: 前序遍历方式为:根节点->左子树->右子树 中序遍历方式为:左子树->根...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)