二級python基礎之二叉樹的遍歷

2021-10-23 18:25:59 字數 1821 閱讀 6743

二叉樹是樹的一種,顧名思義可知其特點:

由二叉樹定義以及圖示分析得出二叉樹有以下特點:

1)每個結點最多有兩顆子樹,所以二叉樹中不存在度大於2的結點。

2)左子樹和右子樹是有順序的,次序不能任意顛倒。

3)即使樹中某結點只有一棵子樹,也要區分它是左子樹還是右子樹。

結點的層次:從根結點開始,假設根結點為第1層,根結點的子節點為第2層,依此類推,如果某乙個結點位於第l層,則其子節點位於第l+1層。

樹的深度:也稱為樹的高度,樹中所有結點的層次最大值稱為樹的深度。

葉子結點:一棵樹當中沒有子結點(即度為0)的結點稱為葉子結點,簡稱「葉子」,又稱為終端結點。

二叉樹的遍歷是計算機二級的考察重點,分為前序遍歷、中序遍歷、後序遍歷和層序遍歷。

前中後三種遍歷的關係,可以理解為依次遞進,在遍歷過程中,二叉樹的每個節點會被依次經過。這三種遍歷的區別在於節點經過不同的次數才能夠輸出。因此掌握的要點在於,從最基礎的開始理解,即前序遍歷。

下面進行遍歷的二叉樹都是上面所示的二叉樹。

前序遍歷從二叉樹的根結點出發,當第一次到達結點時就輸出結點資料,按照先向左在向右的方向訪問。

圖1

過程:

從根節點a出發,到達a一次,輸出a;

接下來先向左到達b,輸出b;

從b再向左走,先後到達dh,輸出dh;

輸出h後,回到d,第二次到達d不輸出,向右到達i,輸出i;

如此則d的葉子結點已經訪問完畢,返回b,向右到達e,輸出e;

然後向左到達j,輸出j;

b的所有子樹訪問完畢,返回a,向右走;

同理,依次輸出cfg。

最終輸出過程為

輸出結果為

abdhiejcfg

中序遍歷是從二叉樹的根結點出發,當第二次到達結點時就輸出結點資料,按照先向左在向右的方向訪問。

過程:

從根結點a出發,第一次經過a,不輸出,向左走依次經過bdh,也不輸出;

到達h後,訪問h的左子樹,為空,則返回h,第二次經過h,輸出h;

返回d,第二次經過d,輸出d;

然後從d向右走,第一次經過i,訪問i的左子樹為空,返回i,第二次經過i,輸出i;

輸出i後,經由d返回b,第二次經過b,輸出b;

按照同樣的規則,依次輸出jeafcg。

最終輸出過程為

輸出結果為

hdibjeafcg

後序遍歷就是從二叉樹的根結點出發,當第三次到達結點時就輸出結點資料,按照先向左在向右的方向訪問。

過程:

從根結點a出發,第一次經過a,不輸出,向左走依次經過bdh,也不輸出;

到達h後,訪問h的左子樹,為空,則返回h,第二次經過h,然後訪問h的右子樹,為空,返回h,第三次經過h,輸出h;

返回d,第二次經過d,向右走,第一次經過i,依次訪問i的左右子樹,返回i,第三次經過i,輸出i;

輸出i後,返回d,第三次經過d,輸出d;

按照同樣的規則,依次輸出jebfgca。

最終輸出過程為

輸出結果為

hidjebfgca

層序遍歷是按照從上到下,從左到右的順序依次輸出所有結點,上圖中二叉樹的層序遍歷結果為:

abcdefghij

python之二叉樹

二叉樹是資料結構中的一種資料結構,在用python搭建決策樹模型時,發現需要先實現多叉樹.usr bin python coding utf 8 面對物件程式設計 思想 面對物件永遠不能包含物件 二叉樹 class btree root none class node data none left ...

二叉樹之 二叉樹深度

二叉樹深度 獲取最大深度 public static int getmaxdepth treenode root 二叉樹寬度 使用佇列,層次遍歷二叉樹。在上一層遍歷完成後,下一層的所有節點已經放到佇列中,此時佇列中的元素個數就是下一層的寬度。以此類推,依次遍歷下一層即可求出二叉樹的最大寬度 獲取最大...

演算法基礎之二叉樹

本文主要包括樹相關的演算法,二叉樹結點基本結構如下 function treenode x 本文還會繼續更新。function depth proot var depth 0 var currdepth 0 dfs proot return depth function dfs node currd...