創建二叉樹的二叉鏈表存儲結構(嚴6.70)

 

轉自:http://www.javashuo.com/article/p-szkjhqdr-mr.html數據結構

純粹是學習一下代碼o(∩_∩)o 哈哈學習

Description
若是用大寫字母標識二叉樹結點,則一顆二叉樹能夠用符合下面語法圖的字符序列表示。試編寫遞歸程序,由這種形式的字符序列,創建相應的二叉樹的二叉鏈表存儲結構(附圖見《嚴蔚敏:數據結構題集(C語言版)》第45頁6.70)。spa

Input
輸入如圖所示的字符序列。.net

Output
創建相應二叉樹的二成叉鏈表存儲結構,並先序遍歷輸出。code

Sample Input 
A(B(#,D),C(E(#,F),#))
Sample Output
AB#DCE#F#

blog

代碼:遞歸

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <malloc.h>
 4 typedef struct BinTreeNode
 5 {
 6     char  data;
 7     struct BinTreeNode    *lchild;
 8     struct BinTreeNode    *rchild;
 9 };
10 struct BinTreeNode *CreateTree()
11 {
12     char s1,s2;
13     struct BinTreeNode *q;
14     q=(struct BinTreeNode*)malloc(sizeof(struct BinTreeNode));
15     s1=getchar();
16     s2=getchar();
17     q->lchild=NULL;
18     q->rchild=NULL;
19     if(s1==',')
20     {
21         q->data=s2;
22         s1=getchar();
23         if (s1=='(')
24         {
25             q->lchild=CreateTree();
26             q->rchild=CreateTree();
27         }
28     }
29     else
30     {
31         q->data=s1;
32         if (s2=='(')
33         {
34             q->lchild=CreateTree();
35             q->rchild=CreateTree();
36         }
37     }
38     return q;
39 }
40 void PrintBinTree (struct BinTreeNode *p)
41 {
42     printf("%c",p->data);
43     if(p->lchild)
44     {
45         PrintBinTree(p->lchild);
46     }
47     if(p->rchild)
48     {
49         PrintBinTree(p->rchild);
50     }
51 }
52 int main()
53 {
54     BinTreeNode *head;
55     head=CreateTree();
56     PrintBinTree(head);
57     return 0;
58 }
相關文章
相關標籤/搜索