二叉樹的遍歷(前 中 後 層次)遞迴與非遞迴實現

2021-10-12 09:30:58 字數 1587 閱讀 9272

遞迴:

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...