在二叉樹的應用中,很多使用二叉樹的操作都是通過遍歷來進行節點的修改。
所以對於遍歷而言是學習二叉樹的要點,今天就來總結一下。
假設二叉樹的結構為:
templatestruct binarytreenode
t _data;
binarytreenode* _left;
binarytreenode* _right;
};
前序遍歷:
void prevorder()
void prevorder_non_r()
cout<2.中序遍歷:
void inorder()
void inorder_non_r()
// 取棧頂節點資料訪問
// 前序遍歷top節點的右樹
if (!s.empty())
}cout<3.後序遍歷:
void postorder()
void postorder_non_r()
binarytreenode* top = s.top();
if (top->_right == null
|| top->_right == prevvisited)
else
}cout<4.層次遍歷
void levelorder()
cout《以上
二叉樹的非遞迴前序 中序 後序 層次遍歷
1.前序非遞迴 非遞迴前序遍歷 void preordernonrecurive treenode root cout endl 2.中序非遞迴 非遞迴中序遍歷 void inordernonrecurive treenode root if s.empty 此條件可以省略 cout endl 注意...
二叉樹的遍歷(前序,中序,後序,層次)
圖示前序遍歷 中序遍歷 後序遍歷 層次遍歷 先序遍歷 順序 根節點 左子樹 右子樹 中序遍歷 順序 左子樹 根節點 右子樹 後序遍歷 順序 左子樹 右子樹 根節點 層次遍歷 順序 按照層次遍歷 根節點 左子樹 右子樹 利用棧的思想 如果沒有右節點,我們將會繼續出棧,繼續訪問新出棧的右節點。如果有右節...
二叉樹的前序 中序 後序非遞迴遍歷 層次遍歷
一 先序遍歷 1.根節點進棧 2.節點出棧,並訪問,若有右孩子,右孩子進棧,若有左孩子,左孩子進棧 3.重複2直至棧空 01 02 09 03 06 10 13 04 05 07 08 11 12 14 15 definition for binary tree struct treenode cl...