首页 > 其他 > 详细

二叉树的建立以及遍历

时间:2014-02-11 18:56:53      阅读:327      评论:0      收藏:0      [点我收藏+]

其实建立的方式和遍历是一个意思.也是利用了递归的原理.只不过在原来应该是输出结点的地方,改成了生成结点,然后给这个结点进行赋值操作。所以理解了遍历就很容易理解建立.

bubuko.com,布布扣
 1 #include "stdafx.h"
 2 #include <iostream>
 3 #include <exception>
 4 #include<string>
 5 using namespace std;
 6 
 7 
 8 typedef char TElemType;
 9 
10 typedef struct BiTNode
11 {
12     TElemType data;
13     struct BiTNode *left,*right;
14 }BiTNode,*BiTree;
15 
16 //前序遍历
17 void PreOrderTraverse(BiTree T)
18 {
19     if(T==NULL) return;
20     cout<<T->data<<" ";//显示该结点的数据
21     PreOrderTraverse(T->left);
22     PreOrderTraverse(T->right);
23 }
24 //中序遍历
25 void InOrderTraverse(BiTree T)
26 {
27     if(T==NULL) return ;
28     InOrderTraverse(T->left);
29     cout<<T->data<<" ";
30     InOrderTraverse(T->right);
31 }
32 
33 //后序遍历
34 void PostOrderTraverse(BiTree T)
35 {
36     if(T==NULL) return ;
37     InOrderTraverse(T->left);
38     InOrderTraverse(T->right);
39     cout<<T->data<<" ";
40 }
41 
42 //建立二叉树
43 void CreateBiTree(BiTree *T)
44 {
45     TElemType ch;
46     cin>>ch;
47     if(ch==#)
48     {
49         *T=NULL;
50     }else
51     {
52         *T=(BiTree)malloc(sizeof(BiTree));
53         if(!*T)
54             exit(OVERFLOW);
55         (*T)->data = ch;
56         CreateBiTree(&(*T)->left);
57         CreateBiTree(&(*T)->right);
58     }
59 }
60 int _tmain(int argc, _TCHAR* argv[])
61 { 
62     BiTree *T;
63     T=(BiTree*)malloc(sizeof(BiTree));
64     CreateBiTree(T);
65     cout<<"前序遍历:";
66     PreOrderTraverse(*T);
67     cout<<"中序遍历:";
68     InOrderTraverse(*T);
69     cout<<"后序遍历:";
70     PostOrderTraverse(*T);
71     return 0 ;
72 }
bubuko.com,布布扣

前序遍历输入:AB#D##C##就实现了.

二叉树的建立以及遍历

原文:http://www.cnblogs.com/crazycodehzp/p/3544364.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!