二叉樹遍歷:
順着一條搜索路徑訪問二叉樹中的節點,每個節點均被訪問一次,且只被訪問一次。
遍歷目的:
得到樹中所有節點的一個線性排列。
遍歷用途:
是二叉樹元素增刪改查等操作的前提。
波蘭式(先序)、逆波蘭式(后序)等:

//定義節點 typedef struct BiNode{ ElemType data; //數據域 struct BiNode *lchild, *rchild; //左右孩子指針 }BiNode, *BiTree;

//二叉樹先序遍歷算法 - 根 左 右 int PreOrderTraverse(BiTree T){ if( T == NULL){ //若是空二叉樹,則直接返回0 return 1; }else{ visit(T); //訪問根節點(自定義visit()方法,比如獲取該節點的數據域) PreOrderTraverse(T->lchild); //遍歷遞歸左子樹 PreOrderTraverse(T->rchild); //遍歷遞歸右子樹 } } //二叉樹中序遍歷算法 - 左 根 右 int InOrderTraverse(BiTree T){ if( T == NULL ){ //若是空二叉樹,則直接返回 return 1; }else{ InOrderTraverse(T->lchild); //遍歷遞歸左子樹 visit(T); //訪問根節點 InOrderTraverse(T->rchild); //遍歷遞歸右子樹 } } //二叉樹后序遍歷算法 - 左 右 根 int PostOrderTraverse(BiTree T){ if( T == NULL ){ return 1; }else{ PostOrderTraverse(T->lchild); //遍歷遞歸左子樹 PostOrderTraverse(T->rchild); //遍歷遞歸右子樹 visit(T); //訪問根節點 } }