(6)二叉树遍历——4

二叉树遍历主要有3种方式:先序遍历,中序遍历,后序遍历。

 

二叉树是每个节点最多有两个子树的树结构。

二叉树可以为空,但树不能为空

二叉树中每个元素的子树都是有序的。

 

 1 #include "iostream"
 2 #define N 7
 3 
 4 using namespace std;
 5 
 6 typedef struct node
 7 {
 8     int data;
 9     struct node *leftChild;
10     struct node *rightChild;
11 }BiTreeNode,*BiTree;
12 
13 BiTreeNode *createNode(int i)
14 {
15     BiTreeNode *q = new BiTreeNode;
16     q->leftChild  = NULL;
17     q->rightChild = NULL;
18     q->data       = i;
19     return q;
20 }
21 
22 BiTree createBiTree()
23 {
24     BiTreeNode *p[N] = {NULL};
25     int i;
26     for (i=0;i<N;i++)
27     {
28         p[i] = createNode(i+1);
29     }
30 
31     for (i=0;i<N/2;i++)
32     {
33         p[i]->leftChild = p[i*2+1];
34         p[i]->rightChild = p[i*2+2];
35     }
36 
37     return p[0];
38 }
39 
40 void preOrderTraverse(BiTree T)//先序
41 {
42     if (T)
43     {
44         cout << T->data << " ";
45         preOrderTraverse(T->leftChild);
46         preOrderTraverse(T->rightChild);
47     }
48 }
49 
50 void preOrderTraverse1(BiTree T)//中序
51 {
52     if (T)
53     {
54         preOrderTraverse1(T->leftChild);
55                 cout << T->data << " ";
56         preOrderTraverse1(T->rightChild);
57     }
58 }
59 
60 void preOrderTraverse2(BiTree T)//后序
61 {
62     if (T)
63     {
64         preOrderTraverse2(T->leftChild);
65         preOrderTraverse2(T->rightChild);
66                 cout << T->data << " ";
67     }
68 }
69 
70 
71 int main()
72 {
73     BiTree T;
74 
75     T = createBiTree();
76     
77     cout << "先序遍历:" << endl;
78     preOrderTraverse(T);
79     cout << endl << endl ;
80 
81     return 0;
82 }
View Code

 

 

 

 

 

——整理自《C/C++程序员面试宝典》

posted @ 2017-04-05 18:44  朝_风  阅读(338)  评论(0编辑  收藏  举报