二叉树遍历主要有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 }
——整理自《C/C++程序员面试宝典》
时间: 2024-08-01 22:41:46