1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<string>
5 #include<cstring>
6 #include<algorithm>
7 #include<cstdlib>
8 #define OVERFLOW 3
9 using namespace std;
10 typedef char TElemType;
11 TElemType ch;
12 typedef struct BiTNode
13 {
14 TElemType data;
15 struct BiTNode *lchild,*rchild;
16 }BiTNode,*BiTree;
17
18
19 //按前序输入二叉树中结点的值(一个字符)
20 //#表示空树,构造二叉链表表示二叉树T
21 void CreateBiTree(BiTree &T)
22 {
23 if(ch=='\n')
24 return;
25 scanf("%c",&ch);
26 if(ch=='#')
27 T=NULL;
28 else{
29 T=(BiTree)malloc(sizeof(BiTNode));
30 (T)->data=ch;
31 CreateBiTree(T->lchild);
32 CreateBiTree(T->rchild);
33 }
34 }
35
36 void PreOrder(BiTree T)//前序遍历二叉树
37 {
38 if(T!=NULL)
39 {
40 printf("%c",T->data);
41 PreOrder(T->lchild);
42 PreOrder(T->rchild);
43 }
44 }
45 void InOrder(BiTree T)//中序遍历二叉树
46 {
47 if(T!=NULL)
48 {
49
50 InOrder(T->lchild);
51 printf("%c",T->data);
52 InOrder(T->rchild);
53 }
54 }
55 void PostOrder(BiTree T)//后序遍历二叉树
56 {
57 if(T!=NULL)
58 {
59 PostOrder(T->lchild);
60 PostOrder(T->rchild);
61 printf("%c",T->data);
62 }
63 }
64 int cnt=0;
65 int countNode(BiTree T)//求二叉树中节点的个数
66 {
67 if(T)
68 {
69 cnt++;
70 countNode(T->lchild);
71 countNode(T->rchild);
72 }
73 return cnt;
74 }
75
76
77 int depthval=0;
78 int dl=0;
79 int dr=0;
80 int Depth(BiTree T)//求二叉树的高度
81 {
82 if(!T)
83 return 0;
84 else
85 {
86 dl=Depth(T->lchild);
87 dr=Depth(T->rchild);
88 depthval=1+(dl>dr?dl:dr);
89 return depthval;
90 }
91 }
92 int main()
93 {
94 BiTree T;
95 CreateBiTree(T);
96 PreOrder(T);
97 cout<<endl;
98 InOrder(T);
99 cout<<endl;
100 PostOrder(T);
101 cout<<endl;
102 return 0;//124##5##3##
103 }