二叉樹的遍歷 非遞迴 C實現 先序遍歷篇

2021-05-27 12:41:38 字數 683 閱讀 1079

用兩種方法先序遍歷

1. 訪問根-根節點入棧-若有左孩子,訪問,入棧;若無,回到父節點(top)找右孩子訪問右孩子;迴圈入棧

2. 迴圈  每次訪問根節點-右孩子壓棧-訪問左孩子

原理:先序遍歷:根左右,所以訪問根-把右孩子壓棧-先訪問左孩子

我傾向於方法二,思路很清晰

#include #include "stack"

using namespace std;

struct tnode

;tnode *root;

void visit(tnode *cur)

else

}}stackst2;

void preorder2(tnode *root)//method 2

else

}}void inittree(tnode *root)

tree[4]->right=tree[6];

tree[1]->left=tree[3];

tree[1]->right=tree[4];

tree[2]->left=tree[5];

tree[0]->left=tree[1];

tree[0]->right=tree[2];

root=tree[0];

}void main()

二叉樹非遞迴先序遍歷

二叉樹的遞迴先序遍歷很簡單,假設二叉樹的結點定義如下 1 struct binarytreenode 2 遞迴先序遵循 根 左 右的順序 1 void preorder binarytreenode root 2非遞迴我們以乙個例子說明,仍然以之前博文的乙個二叉樹說明 1 82 36 104 55 ...

二叉樹先序遍歷(c語言,非遞迴)

已知二叉樹按照二叉鍊錶方式儲存,利用棧的基本操作寫出先序遍歷非遞迴形式的演算法 void pre order bitree root 在遍歷過程中,pre order函式需要呼叫 visit node 函式來實現對結點的訪問,該函式宣告如下 void visit node bitnode node ...

非遞迴先序遍歷二叉樹 2

非遞迴先序遍歷二叉樹 include define maxsize 100 typedef char datatype 二叉鍊錶型別定義 typedef struct binnode binnode,bintree 順序棧型別定義 typedef struct seqstk 初始化棧 int ini...