資料結構學習之 樹的遍歷

2021-10-19 08:02:12 字數 1188 閱讀 5072

今天學習的是資料結構有關樹的遍歷的知識點。以下將會講到樹的幾種基本的的遍歷方式,以及通過例題來鞏固知識點。

二叉樹的遍歷是指通過一定順序訪問二叉樹的所有結點。

一般有四種方法:先序遍歷、中序遍歷、後序遍歷、層序遍歷。

前三種一般使用深度優先搜尋dfs實現,而層序遍歷一般使用廣度優先搜尋bfs來實現。

首先給出二叉樹的結構:

typedef

struct nodenode,

*tree;

思路:先訪問根結點,再去訪問左右子樹。

方法:遞迴實現

void

preorder

(tree tree)

同理,中序遍歷與後序遍歷都是通過遞迴來實現。其**如下:

void

inorder

(tree tree)

void

postorder

(tree tree)

總結:無論是哪一種遍歷,都必須要知道中序遍歷序列才能唯一確定一顆樹。

層序遍歷是指按層次的順序從根結點向下逐層進行遍歷,且對於同一層從左到右遍歷。

其實二叉樹的遍歷問題的核心在於:二維結構的線性化。

思路:從結點訪問左右兒子(根入隊->訪問結點->入隊左右兒子)。通過佇列、陣列都能夠實現。

方法一:佇列實現層序遍歷

void

order

(tree tree)

//層序遍歷

if(t-

>right)

q.pop();

}}

方法二:陣列實現層序遍歷

void

order

(tree tree)

//層序遍歷

out++;}

}

給定一棵樹的後序遍歷與中序遍歷的遍歷序列,重建這顆二叉樹。

tree create

(int n,

int*aft,

int*mid)

今日學習分享就這些啦!要和yph一起加油呀!

資料結構學習 樹

樹結構是二叉樹的擴充套件,二叉樹在乙個節點上只有兩個子節點,而樹結構在乙個節點上不只有兩個,可以有n個,n大於等於0,更具有一般意義。二叉樹的概念同樣適用於樹,如完全數,滿樹等,此外還有 有序樹 結點的各子樹從左到右是有次序的,即若交換各子樹相對位置會構成不同的樹。無序樹 結點的各子樹從左到右是無次...

資料結構學習 樹

樹是n個結點的有限集合。n 0時稱為空樹,在任意一棵非空樹中 1 有且僅有乙個特定的稱為根的結點。2 當n 1時,其餘結點可以分為m個互不相交的有限集合,其中每乙個集合本身又是一棵樹。在此,我們主要來學習二叉樹的應用。結點擁有的子樹數稱為結點的度。度為0的結點稱為葉子結點或者終端結點。度不為0的結點...

資料結構學習(四)二叉樹的遍歷

快速理解深度優先搜尋 深度優先搜尋有三種 1.前序遍歷 2.中序遍歷 3.後序遍歷 它們的區別是什麼呢?這三種搜尋型別其實是根據訪問根的順序決定的。直白敘述就是當我們訪問樹時,乙個節點連線的其餘節點的是按什麼順序被列印出來的。那麼前序遍歷根第乙個出現,按照根 左子樹 又子樹的順序 中序遍歷就是左子樹...