CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

有关于2叉树的问题

楼主yrwithsh(清脆的杯子)2002-05-24 12:06:05 在 C/C++ / C语言 提问

已知先序和中序遍历,来求其的2叉数的数的算法。  
   
  我想了一下必须要两个序列才行  
   
   
   
  比如说             -  
                  +               /  
            a       *         e       f  
                b     -  
                    c     d                               (a+b*(c-d))-e/f  
   
  它的先序遍历为:-+a*b-cd/ef  
  它的中序遍历为:a+b*c-d-e/f          
   
   
  那么给了你一个2叉树的先序遍历及中序遍历  
   
  要求你编程求出这个2叉树,也就是要先确定存在后  
  在求出表达式:     (a+b*(c-d))-e/f  
   
   
  怎么编程实现?谢谢了哈!  
  问题点数:20、回复次数:6Top

1 楼sylmoon(专注Oracle)回复于 2002-05-24 18:56:40 得分 0

研究研究Top

2 楼fangrk(加把油,伙计!)回复于 2002-05-24 19:03:13 得分 5

《程序系统设计师》(人民邮电,新大纲)P254Top

3 楼fangrk(加把油,伙计!)回复于 2002-05-24 19:04:00 得分 5

P524Top

4 楼LeeMaRS(小菜虎,仍需努力)回复于 2002-05-24 19:14:26 得分 5

能保证前序和中序中都没有重复的元素吗?  
  如果能   则保证有唯一的一棵二叉树.Top

5 楼vanhui(飘零辉)回复于 2002-05-25 00:43:54 得分 5

一本英文的数据结构教材上有提到,通过已知条件则保证有唯一的一棵二叉树.  
  但算法不详Top

6 楼yrwithsh(清脆的杯子)回复于 2002-05-26 19:53:08 得分 0

我给一个程序,大家讨论一下  
   
   
   
  #include<iostream.h>  
  class   treenode  
  {  
   
  int   data;  
  treenode*   lchild;  
  treenode*   rchild;  
  treenode*   father;  
  public:  
  treenode()  
  {  
  lchild=0;  
  rchild=0;  
          father=0;  
  }  
  friend   int   search(int   a);  
  friend   treenode*   creattree(int   nod1[],int   nod2[],int   n);  
  friend   void   tre(treenode*   m);  
  ~treenode()  
  {}  
   
  };  
  treenode*   p;  
  int     search(int   a)  
  {  
  treenode   *search;  
  search=p;  
          int   sign=0;  
  while(search!=0)  
  {  
      if(a==search->data)  
  {  
                sign=1;  
        p=search;  
  return   sign;  
  }  
            search=search->father;  
  }  
   
  return   sign;  
  }  
   
  treenode*   creattree(int   nod1[],int   nod2[],int   n)                     //&Ograve;&Ntilde;&Ouml;&ordf;±é&Agrave;ú&frac12;&Uacute;&micro;&atilde;&ETH;ò&Aacute;&ETH;&sup1;&sup1;&Ocirc;ì&para;&thorn;&sup2;&aelig;&Ecirc;÷  
  {  
  treenode*   head;  
  head=new   treenode;  
  head->data=nod1[0];  
  head->father=0;  
   
  p=head;  
  int   i=1,j=0;  
  int   biaoji=0;  
   
   
  while   (i<n)  
  {  
   
  if(search(nod2[j]))  
  {  
  biaoji=1;  
                          j++;  
  }  
   
  if(!search(nod2[j]))  
  {  
  if(biaoji==1)  
  {  
  treenode*   tn;  
                  tn=new   treenode;  
          tn->data=nod1[i];  
          p->rchild=tn;  
  tn->father=p;  
  p=p->rchild;  
  i++;  
  }  
  if(biaoji==0)  
  {    
                                  treenode*   tn;  
                  tn=new   treenode;  
          tn->data=nod1[i];    
   
  p->lchild=tn;  
          tn->father=p;  
          p=p->lchild;  
          i++;  
  }  
  biaoji=0;  
   
               
  }  
  }  
  return   head;  
  }  
  void   tre(treenode*   m)  
  {  
  if(m!=0)  
  {  
             
          tre(m->lchild);  
          cout<<char(m->data);  
          tre(m->rchild);  
  }  
  }  
   
   
    void   main()  
  {  
  int   k;  
          int   l1[8]={'b','a','d','c','e'};  
  int   l2[8]={'a','b','c','d','e'};  
  treenode*   nod;  
  nod=creattree(l1,l2,5);  
  tre(nod);  
          cin>>k;  
  }  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  Top

相关问题

  • 二叉树
  • 二叉树
  • 二叉树遍历
  • 请问二叉树.....
  • 二叉树映象
  • 二叉树映象
  • 二叉树映象
  • 二叉树映象
  • 二叉树问题
  • 二叉排序树

关键词

  • search
  • treenode
  • 序遍历
  • nod
  • 叉树
  • biaoji
  • father
  • lchild
  • tn
  • rchild

得分解答快速导航

  • 帖主:yrwithsh
  • fangrk
  • fangrk
  • LeeMaRS
  • vanhui

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo