二叉樹的前序 中序 後序遍歷(非遞迴)

2021-09-01 19:46:09 字數 957 閱讀 2867

今天弄了一天的二叉樹的前序、中序和後序遍歷,分享出來,共同交流。

**中採用先序遍歷的方法建立二叉樹,示例建立二叉樹格式如下:

建立過程中,以

**:

#include #include typedef struct btnodebtnode,*btree;

typedef struct stackbtstack;

typedef struct post_btnodepost_btnode,*post_btree;

typedef struct post_stackpost_stack;

btree creatbtree(btree root)//先序構建二叉樹

return root;

}void preorder_nonrec(btree root)//先序遍歷非遞迴

}printf("\n");

}void inorder_nonrec(btree root)//中序遍歷非遞迴

p = stack.data[stack.top--];

printf(" %c",p->data);

p = p->right;

}printf("\n");

}void postorder_nonrec(btree root)//後續遍歷非遞迴

node = stack.data[stack.top--];

if(node.tag == 1)

else if(node.tag == 2)

}printf("\n");

}int main()

執行結果:

二叉樹的非遞迴前序中序後序遍歷

做個筆記,方便日後查閱 全部是模板函式,c 語言 template void preorder node root,ostream os if st.empty os endl template void midorder node root,ostream os if st.empty os en...

二叉樹的前序 中序 後序遍歷(非遞迴)

如需遞迴寫法,可以參考 結構體定義 struct node 構建二叉樹使用二叉鍊錶使用非遞迴的寫法,必然需要其他輔助空間來實現,對於遞迴改寫成非遞迴的乙個做法而言,我們首選的輔助空間就是棧結構。而我們要做的,就是使用棧去模擬遞迴的操作 只能操作棧頂 如果想使用棧完全模擬遞迴的操作,將會對結構體進行更...

二叉樹的前序 中序 後序的遍歷 遞迴 非遞迴

前言 二叉樹的非遞迴遍歷需要用到棧的一些操作,所以貼出棧的相關操作的鏈結 定義資料結構 typedef char btdatatype typedef struct binarytreenode btnode 1.前序遍歷 遞迴 按照前序遍歷的規則,先訪問根節點,在遞迴遍歷左子樹,最後遞迴遍歷右字樹...