二叉樹的前序 中序和後序遍歷

2021-07-04 18:55:48 字數 873 閱讀 6944

今天做到阿里巴巴的一道筆試題,關於二叉樹的遍歷序列的,原題摘錄如下:

某二叉樹的先序遍歷是12453,中序遍歷是42513,那麼其後續遍歷是?

a 45231

b 42351

c 12345

d 54321

本題答案為a

本題考查的知識點是二叉樹前序、中序、後序遍歷的相互求法,即如果知道兩個的遍歷,如何求第三種遍歷。

首先,我們看看前序、中序、後序遍歷的特性:

前序遍歷(前序遍歷):

1.訪問根節點

2.前序遍歷左子樹

3.前序遍歷右子樹

中序遍歷:

1.中序遍歷左子樹

2.訪問根節點

3.中序遍歷右子樹

後序遍歷:

1.後序遍歷左子樹

2.後序遍歷右子樹

3.訪問根節點

以本題為例簡單說明:先序遍歷是 12453 依據先序遍歷的特性:先序是先訪問根節點 所以1是二叉樹的根節點,後序遍歷是先訪問左子樹和右子樹,後訪問 425**1**3,在1的左邊的是二叉樹的左子樹425,1右邊的3是二叉樹的右子樹,右子樹只有乙個節點,所以可以先構造出乙個二叉樹為

1 3(1的右子樹)

再看先序遍歷 12453和後序遍歷**425***1*3,2是左子樹的根節點,在後序遍歷中 2在4和5的中間 ,所以 4是2的左子樹,5是2的右子樹,構造出的二叉樹為:

1 21的左子樹) 3(1的右子樹)

4 (2的左子樹) 5(2的右子樹)

所以後序遍歷序列為 45231

本題答案為a

如果給出後序遍歷和中序遍歷來求前序遍歷的分析也是一樣。

二叉樹遍歷(前序,中序,後序

二叉樹的遍歷有三種方式,如下 1 前序遍歷 dlr 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根 左 右。2 中序遍歷 ldr 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左 根 右。3 後序遍歷 lrd 首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左 右 根。例1 如上圖...

二叉樹的前序中序和後序遍歷

根據某種策略,按照一定的次序訪問二叉樹中的每乙個結點,使每個結點被訪問一次且只被訪問一次。這個過程稱為二叉樹的遍歷。遍歷的結果是二叉樹結點的線性序列。非線性結構線性化。策略 左孩子結點一定要在右孩子結點之前訪問 若二叉樹為空,則返回 否則,所得到的線性序列分別稱為先序 根 序列。先序遍歷序列為 a ...

二叉樹的遍歷 前序 中序 後序

include includetypedef struct bintree treenode,b tree b tree root null 函式的宣告 b tree creat tree int n void print1 void preorder b tree pointer 前序遍歷 voi...