二叉樹的中序遍歷(兩種實現方式)

2021-10-04 20:46:12 字數 707 閱讀 4894

二叉樹採用鏈式儲存結構進行儲存。

二叉樹的定義為:

typedef

struct nodebitree;

中序遍歷(ldr)是二叉樹遍歷的一種,也叫做中根遍歷、中序周遊。在二叉樹中,中序遍歷首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。

示例:

遞迴實現:

左子樹遞迴輸出,輸出該結點值,再右子樹遞迴輸出。

void

inorder

(bitree *tree)

非遞迴方式實現(棧實現):

借助於臨時結點temp。

從根節點開始遍歷左子樹,並依次進棧,直到樹底。(根節點第乙個進棧)

對棧中結點出棧,輸出,並獲得該結點的右子樹,

重複2,3過程,直到棧為空。

void

inorder1

(bitree *tree)

temp = stk.

top();

stk.

pop();

cout

" ";

temp = temp->rchild;

}}

兩種常見的方式實現二叉樹的中序遍歷

二叉樹的遍歷常見的分為三種方式 前序遍歷 中序遍歷 後序遍歷。簡單的理解,所謂的前 中 後的不同實際上就是訪問根節點時機的不同。typedef struct binode binode,bitree 一 對於樹的遍歷操作,常見的方式是採用遞迴的形式,此處不詳細介紹遞迴。常見的採用遞迴實現中序遍歷的思...

根據兩種二叉樹遍歷方式,求二叉樹方法

如何根據已知兩種遍歷的序列,求原始的二叉樹?並不是已知道任意兩個序列都可以還原二叉樹,只有知道先序中序以及中序和後序兩種型別的遍歷順序才能還原二叉樹。只知道先序和後序是還原不了原始的二叉樹的。1 已知道先序和中序遍歷,還原二叉樹。已知道二叉樹的先序遍歷為abcdefgh,中序遍歷為bdceafhg,...

二叉樹的兩種遍歷方法

二叉樹的遍歷有兩種方式,一種是遞迴遍歷,另一種是非遞迴遍歷。前一種方法從形式上很好理解,在這裡不再過多的談論,直接上 二叉樹的建立 定義並通過層序生成一棵二叉樹 typedef struct bitreebitree bitree creatbitree bitree con max int idx...