1. 程式人生 > >C 二叉樹的層序遍歷

C 二叉樹的層序遍歷

先序中序後序什麼的都好說,但是層序遍歷費點勁,但也還行
之前二叉樹基本操作在這裡
層序遍歷就相當於,根節點先進來,再把子節點再都放進來,根節點出去,子節點再將它們的子節點再放進來,它們再出去。就是這樣,其實就是個順序佇列,先進先出。
程式碼如下

//層序遍歷
void putout4(BiThrTree T){
    //先定個大陣列,就像是用陣列形式定了二叉樹的儲存結構
    BiThrTree q[100];
    q[0] = T;
    //front就是要輸出的遊標,rear是新進來點儲存的遊標
    int front = 0;
    int rear = 1;
    //rear就比front大,說明數組裡面還有沒輸出的節點
while (front < rear) { //我front按部就班地往後走,每次加一 printf("%c ", q[front]->data); //只要樹節點有左孩子節點那麼rear就加1 if (q[front]->LeftTreeNode) { q[rear++] = q[front]->LeftTreeNode; } //只要樹節點有右孩子節點那麼rear就加1 if (q[front]->RightTreeNode)
{ q[rear++] = q[front]->RightTreeNode; } //繼續往後走 ++front; } }