資料結構 | 二叉樹的建立和三種遍歷方式
阿新 • • 發佈:2021-10-14
二叉樹的建立和三種遍歷方式
幫同學寫作業順帶複習了一下
直接丟程式碼了:
#include <stdio.h> #include <stdlib.h> // 二叉樹節點結構體&指標型別 typedef struct BiTNode { char data; // 資料域 struct BiTNode* lchild; // 左孩子 struct BiTNode* rchild; // 右孩子 }BiTNode, *BiTree; void CreateBiTree(BiTree &T){ // 前序遍歷建立二叉樹 char data; scanf("%c", &data); if (data != '#'){ // 遇到#表示當前樹結束 T = new BiTNode; // 生成根節點 T->data = data; // 給資料域賦值 CreateBiTree(T->lchild); // 遞迴建立左子樹 CreateBiTree(T->rchild); // 遞迴建立右子樹 }else{ T = NULL; // 空樹 } } // 前序遍歷 void PreOrderTraverse(BiTree T){ if(T){ printf("%c ", T->data); // 訪問根節點 PreOrderTraverse(T->lchild); // 遞迴前序遍歷左子樹 PreOrderTraverse(T->rchild); // 遞迴前序遍歷右子樹 } } // 中序遍歷 void InOrderTraverse(BiTree T){ if(T){ InOrderTraverse(T->lchild); // 遞迴中序遍歷左子樹 printf("%c ", T->data); // 訪問根節點 InOrderTraverse(T->rchild); // 遞迴中序遍歷右子樹 } } // 後序遍歷 void PostOrderTraverse(BiTree T){ if(T){ PostOrderTraverse(T->lchild); // 遞迴後序遍歷左子樹 PostOrderTraverse(T->rchild); // 遞迴後序遍歷右子樹 printf("%c ", T->data); // 訪問根節點 } } int main(){ BiTree bt = NULL; CreateBiTree(bt); printf("\n前序遍歷:"); PreOrderTraverse(bt); printf("\n中序遍歷:"); InOrderTraverse(bt); printf("\n後序遍歷:"); PostOrderTraverse(bt); return 0; }
over.
本文來自部落格園,作者:Mz1,轉載請註明原文連結:https://www.cnblogs.com/Mz1-rc/p/15408396.html
如果有問題可以在下方評論或者email:[email protected]