二叉樹遍歷

2022-03-26 14:19:36 字數 1362 閱讀 6411

首先來說一下二叉樹的定義:二叉樹是乙個連通的無環圖,並且每乙個頂點的度不大於3;有根二叉樹還要滿足根結點的度不大於2。有了根結點之後,每個頂點定義了唯一的父結點,和最多2個子結點。二叉樹不是樹的特殊情形,儘管與樹有許多相似之處,但樹和二叉樹 有兩個主要的區別:1、樹中節點的最大度數沒有限制,而二叉樹節點度數最大限制是2;2、樹的節點無左右之分,而二叉樹有。

二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。二叉樹的每個結點至多只有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至多有2的 i -1次方個結點;深度為k的二叉樹至多有2^(k) -1個結點;對任何一棵二叉樹t,如果其終端結點數(即葉子結點數)為n0,度為2的結點數為n2,則n0 = n2 + 1。二叉樹的鏈式儲存結構是一類重要的資料結構。

二叉樹遍歷:遍歷是對樹的一種最基本運算,所謂二叉樹遍歷,就是按照一定的規則和順序走遍二叉樹的所有節點,使每乙個節點都被訪問到,而且僅訪問一次。由於二叉樹是非線性結構,因此樹的遍歷實質上是將二叉樹的各個節點轉化為乙個線性序列來表示。二叉樹遍歷主要分4種:先序遍歷,中序遍歷,後序遍歷。層次遍歷。

先序遍歷:首先訪問根,再先序遍歷左(右)子樹,最後先序遍歷右(左)子樹。

中序遍歷:首先中序遍歷左(右)子樹,再訪問根,最後中序遍歷右(左)子樹

後序遍歷:首先後序遍歷左(右)子樹,再後序遍歷右(左)子樹,最後訪問根。

層次遍歷:即按照層次訪問,通常用佇列來做。訪問根,訪問子女,再訪問子女的子女(越往後的層次越低)(兩個子女的級別相同)。

舉例來說:

圖一的先序遍歷:a-b-c-d-e-f-g  (根-左子樹-右子樹)

圖一的中序遍歷:c-b-d-a-f-e-g (左子樹-根-右子樹)

圖一的後序遍歷:c-d-f-g-b-e-a (左子樹-右子樹-根)

圖一的層序遍歷:a-b-e-c-d-f-g (先遍歷根再遍歷子樹)

圖二圖二的先序遍歷:a-b-c-d-e-g-f  (根-左子樹-右子樹)

圖二的中序遍歷:c-b-e-g-d-f-a(左子樹-根-右子樹)

圖二後序遍歷:c-g-e-f-d-b-a(左子樹-右子樹-根)

圖二的層序遍歷:a-b-c-d-e-f-g (先遍歷根再遍歷子樹)

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...