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

2021-10-05 06:35:04 字數 1103 閱讀 7570

已知二叉樹按照二叉鍊錶方式儲存,利用棧的基本操作寫出先序遍歷非遞迴形式的演算法:

void

pre_order

(bitree root)

;

在遍歷過程中,pre_order函式需要呼叫 visit_node 函式來實現對結點的訪問,該函式宣告如下:

void

visit_node

(bitnode *node)

;

typedef

int datatype;

typedef

struct nodebitnode,

*bitree;

#define stack_size 50

typedef bitnode* elemtype;

typedef

struct

stack;

void

init_stack

(stack *s)

;// 初始化棧

bool push

(stack* s, elemtype x)

;//x 入棧

bool pop

(stack* s, elemtype *px)

;//出棧,元素儲存到px所指的單元,函式返回true,棧為空時返回 false

bool top

(stack* s, elemtype *px)

;//獲取棧頂元素,將其儲存到px所指的單元,函式返回true,棧滿時返回 false

bool is_empty

(stack* s)

;// 棧為空時返回 true,否則返回 false

答案:

非遞迴先序遍歷:

void

pre_order

(bitree root)

//左邊全壓入棧

pop(s,

&t);

t = t->right;

}}

如果有更好的方法或者以上程式有任何錯誤,歡迎討論。

二叉樹非遞迴先序遍歷

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

非遞迴先序遍歷二叉樹 2

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

二叉樹的非遞迴先序,中序遍歷

題目描述 從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。採取非遞迴方法輸出這棵二叉樹的先序 中序遍歷序列。樣例輸入 abc de g f 樣例輸出 abcdegf cbegdfa 實現 include include define max 100 typedef struct no...