回 帖 发 新 帖 刷新版面

主题:[讨论]二叉树遍历不了了 高手进来帮忙看一看

#include<iostream.h>  //输入不能终止 为什么啊 ?? 麻烦高手帮帮忙
typedef char datatype;
typedef struct Node
{
  datatype data;
  struct Node *lchild;
  struct Node *rchild;
}BiTNode,*BiTree;



void CreateBiTree(BiTree &bt) //创建二叉树
{
  char ch;
  cin>>ch;
  if(ch=='$') bt=NULL;
  else
  {
    bt=new BiTNode;
    bt->data=ch;
    CreateBiTree(bt->lchild);
    CreateBiTree(bt->rchild);
  }
}



void Visite(BiTree bt)

  
  cout<<bt->data;
}

void PreOrder(BiTree bt) //先序遍历
{
  if(bt==NULL) return ;
  Visite(bt);
  PreOrder(bt->lchild);
  PreOrder(bt->rchild);
}




void main() 
{
  BiTree bt;
  cout<<"请输入树的结点:"<<endl;
  CreateBiTree(bt);
  cout<<"树的先序遍历:"<<endl;
  PreOrder(bt);
}

回复列表 (共2个回复)

沙发

代码是没问题,关键是你怎么理解这个问题
如果想构建这样的二叉树
         a
           /  \
          b       c
那么实际上你是构建这样的树
         a
           /  \
          b       c
        /  \  / \    
       $    $ $  $
所以输入的字符串应该是ab$$c$$

如果想构建下面这样的二叉树
         a
           /  
          b       
        /       
       c    
那么实际上是这样的
         a
           /  \
          b       $
        /  \      
       c    $ 
      / \
     $   $

所以输入的字符串应该是abc$$$$

板凳


多谢了 原来是这个样子的 看来我还没有深刻理解树的建立

我来回复

您尚未登录,请登录后再回复。点此登录或注册