遞迴:
void
preorder
(btnode *root)
}
void
preorder_
(btnode *root)if(
!s.empty()
)}cout<}
遞迴:
void inorder (btnode *root)
}
void inorder_ (btnode *root)if(
!s.empty()
)}cout<}
遞迴:
void postorder (btnode *root)
}
非遞迴:如果當前節點為樹葉或者前一次訪問為當前節點的孩子節點直接輸出,出棧。然後將孩子節點加入棧,左孩子在最後加入
void postorder_ (btnode *root)
else
} cout<}
void
levelorder
(btnode *root)
que=t;
cout<} cout<}
#include
using
namespace std;
typedef
char elemtype;
typedef
struct nodebtnode;
//二叉樹結點型別
//初始化空二叉樹
void
treeinit
(btnode*
&root)
//按照前序遍歷序列建立二叉樹
void
createbtree_pre
(btnode*
&root, elemtype array)
else
}//遞迴
//前序遍歷二叉樹
void
preorder
(btnode *root)
}//中序遍歷
void inorder (btnode *root)
}//後序遍歷
void postorder (btnode *root)
}//非遞迴前序
void
preorder_
(btnode *root)if(
!s.empty()
)}cout<}//非遞迴中序
void inorder_ (btnode *root)if(
!s.empty()
)}cout<}void postorder_ (btnode *root)
else
} cout<}//層次遍歷
void
levelorder
(btnode *root)
que=t;
cout<} cout<}int
main()
二叉樹遍歷實現(前中後層次 遞迴非遞迴)
一.前序遍歷 include include includeusing namespace std struct binarytreenode 遞迴實現 void preorder1 binarytreenode proot if proot m pright nullptr 非遞迴實現 void ...
二叉樹的遍歷(遞迴與非遞迴 層次)
遞迴遍歷 1.先序遍歷 根 左 右 void preorder treenode root 2.中序遍歷 左 根 右 void inorder treenode root 3.後序遍歷 左 右 根 void endorder treenode root 非遞迴遍歷 1.先序遍歷 根 左 右 void...
二叉樹的前中後遍歷遞迴非遞迴實現
好吧,我終於把前中後 遞迴和非遞迴的都寫出來了。如下 不解釋 include includeusing namespace std struct btnode void assertbtn btnode root1,int a else 非遞迴前序遍歷 stack s pre void preord...