先序遍历
1 void preOrderTraverase(TreeNode * r) 2 { 3 if(r) 4 { 5 printf("%d\t",r->_data); 6 preOrderTraverase(r->_left); 7 preOrderTraverase(r->_right); 8 } 9 }
中序遍历
1 void midOrderTraverase(TreeNode * r) 2 { 3 if(r) 4 { 5 midOrderTraverase(r->_left); 6 printf("%d\t",r->_data); 7 midOrderTraverase(r->_right); 8 } 9 }
后序遍历
1 void postOrderTraverase(TreeNode * r) 2 { 3 if(r) 4 { 5 postOrderTraverase(r->_left); 6 postOrderTraverase(r->_right); 7 printf("%d\t",r->_data); 8 } 9 }
层序遍历(用到队列)
1 void levelOrderTraverse(TreeNode *root) 2 { 3 if(root) 4 { 5 Queue q; 6 initQueue(&q); 7 enQueue(&q,root); 8 while(!isQueueEmpty(&q)) 9 { 10 root = deQueue(&q); //根出队 11 printf(" %d ",root->data); 12 if(root->left)enQueue(&q,root->left); //左子树入队 13 if(root->right)enQueue(&q,root->right);//右子树入队 14 } 15 printf("\n"); 16 } 17 }
原文:https://www.cnblogs.com/shaoqibeckyabcdefg/p/14456790.html