遍歷演算法
1.中序遍歷的遞迴演算法定義:
若二叉樹非空,則依次執行如下操作:
(1)遍歷左子樹;
(2)訪問根結點;
(3)遍歷右子樹。
2.先序遍歷的遞迴演算法定義:
若二叉樹非空,則依次執行如下操作:
(1) 訪問根結點;
(2) 遍歷左子樹;
(3) 遍歷右子樹。
3.後序遍歷得遞迴演算法定義:
若二叉樹非空,則依次執行如下操作:
(1)遍歷左子樹;
(2)遍歷右子樹;
(3)訪問根結點。
實現**如下:
#include
#include
#define m 20
typedef struct node
btnode;
btnode *create()/* 建立二叉樹 */
return t;
}/*中序遍歷二叉樹*/
void inorder(btnode *t)
if(i>0)
}while(i>0||t!=null);
}/*前序遍歷二叉樹*/
void preorder(btnode *t)
if(i>0)
t=s[--i];
}while(i>0||t!=null);
}/*後序遍歷二叉樹*/
void postorder(btnode *t)
while(i>0&&s1[i]==1)
if(i>0)
}while(i>0);
}/* 主函式 */
void main()
if(choice==0)break;}}
例如:a
/ /
b c
/ / /
d e f
輸入:abd###ce##f##
先序遍歷輸出:a b d c e f
中序遍歷輸出:d b a e c f
後序遍歷輸出:d b e f c a
二叉樹的非遞迴先序,中序,後序遍歷
二叉樹的非遞迴遍歷 先序遍歷,中序遍歷,後序遍歷 include include using namespace std typedef struct node binode,bitree 先序遞迴建立樹,這裡注意引數的型別,t的型別是 如果是 稍加改動就ok.void createtree bit...
二叉樹的非遞迴先序 中序 後序遍歷
演算法思想 先序 nlr的訪問順序,由於r節點,即右孩子的訪問需要通過根節點的指標來實現,所以,需要設乙個棧來儲存根節點。具體看 void preorder btree t else while 中序遍歷和先序遍歷幾乎一樣 void midorder btree t else 後序遍歷 lrn順序。...
二叉樹非遞迴實現先序 中序 後序遍歷
測試資料 abc000de0f00g00 這是乙個先序序列 0表示當前結點為空 include includetypedef struct node node char chin 100 陣列從儲存獲取的二叉樹序列元素 int m int initchain node q,int step if q...