《数据结构教程》(李春葆 主编)课后习题【练习题7】

【7.4】

 1 #include <iostream>

 2 #include <stdio.h>

 3 #include <stdlib.h>

 4 using namespace std;  5 #define MAXN 100

 6 

 7 typedef struct node{  8     char data;  9     node *lchild; 10     node *rchild; 11 } BTNode,*LinkBTNode; 12 LinkBTNode BuildBTree(char a[],int d)    //构造二叉树

13 { 14     if(a[d]==0) 15         return NULL; 16     LinkBTNode bt = (LinkBTNode)malloc(sizeof(BTNode)); 17     bt->data = a[d]; 18     bt->lchild = BuildBTree(a,d<<1); 19     bt->rchild = BuildBTree(a,d<<1|1); 20     return bt; 21 } 22 void DispBTNode(LinkBTNode b)    //以括号表示法输出二叉树

23 { 24     if(b!=NULL){ 25         cout<<b->data; 26         if(b->lchild!=NULL||b->rchild!=NULL){ 27             cout<<"("; 28             DispBTNode(b->lchild); 29             if(b->rchild!=NULL) 30                 cout<<','; 31             DispBTNode(b->rchild); 32             cout<<')'; 33  } 34  } 35 } 36 int main() 37 { 38     int i,n; 39     while(cin>>n){ 40         if(n==0) break; 41  getchar(); 42         char a[MAXN*3+1] = {0}; 43         for(i=1;i<=n;i++)    //依次输入完全二叉树的节点

44             cin>>a[i]; 45         LinkBTNode bt = BuildBTree(a,1);   //用二叉链创建二叉树

46  DispBTNode(bt); 47         cout<<endl; 48  } 49     return 0; 50 }

 

Freecode : www.cnblogs.com/yym2013

你可能感兴趣的:(数据结构)