資料結構學習 樹

2021-08-28 11:01:18 字數 1664 閱讀 1659

樹結構是二叉樹的擴充套件,二叉樹在乙個節點上只有兩個子節點,而樹結構在乙個節點上不只有兩個,可以有n個,n大於等於0,更具有一般意義。

二叉樹的概念同樣適用於樹,如完全數,滿樹等,此外還有

有序樹:結點的各子樹從左到右是有次序的,即若交換各子樹相對位置會構成不同的樹。

無序樹:結點的各子樹從左到右是無次序的,即若交換各子樹相對位置部會構成不同的樹。

森林:零棵或有限棵不相交的樹的集合稱為森林。任何一棵樹,刪去根節點,就變成了森林。

表示方法:

1.直觀表示法

2.巢狀集合表示法

3.凹入表示法

4.廣義表表示法

樹結構:

1.雙親表示法:適用於子節點操作不多的場景,對獲取子節點資訊不利

本身資訊

雙親在陣列中的座標索引資訊

2.孩子表示法:適用于父節點操作不多的場景,對獲取父節點資訊不利

2.1多重鍊錶法:

本身資訊

子節點索引列表

2.2孩子鍊錶表示法:

本身資訊

子節點物件列表

子節點物件:

該子節點序號

下一孩子節點序號

3.雙親孩子表示法

本身資訊

父節點索引序號

子節點物件列表

子節點物件包含當前子節點索引序號和下一子節點(兄弟節點)索引序號

4.孩子兄弟表示法

本身資訊

首個子節點索引序號

當前節點下一子節點(兄弟節點)索引序號

樹轉為二叉樹:

(1)樹中所有相鄰兄弟之間加一條連線。

(2)對樹中的每個結點,只保留它與第乙個孩子結點之間的連線,刪去它與其它孩子結點之間的連線。

(3)以樹的根結點為軸心,將整棵樹順時針轉動一定的角度,使之結構層次分明。

森林轉為二叉樹:

(1)將森林中的每棵樹轉換成相應的二叉樹。

(2)第一棵二叉樹不動,從第二棵二叉樹開始,依次把後一棵二叉樹的根結點作為前一棵二叉樹根結點的右孩子,當所有二叉樹連起來後,此時所得到的二叉樹就是由森林轉換得到的二叉樹。

二叉樹轉換為樹和森林:

(1)若某結點是其雙親的左孩子,則把該結點的右孩子、右孩子的右孩子……都與該結點的雙親結點用線連起來;

(2)刪去原二叉樹中所有的雙親結點與右孩子結點的連線;

(3)整理由(1)、(2)兩步所得到的樹或森林,使之結構層次分明。

樹的遍歷:

1.先根遍歷

(1)訪問根結點;

(2)按照從左到右的順序先根遍歷根結點的每一棵子樹。

2.後根遍歷

(1)按照從左到右的順序後根遍歷根結點的每一棵子樹。

(2)訪問根結點;

森林的遍歷:

1.前序遍歷:(參照二叉樹先序遍歷)

(1)訪問森林中第一棵樹的根結點;

(2)前序遍歷第一棵樹的根結點的子樹;

(3)前序遍歷去掉第一棵樹後的子森林。

2.中序遍歷:(參照二叉樹中序遍歷)

(1)中序遍歷第一棵樹的根結點的子樹;

(2)訪問森林中第一棵樹的根結點;

(3)中序遍歷去掉第一棵樹後的子森林。

樹的應用:

1.判定樹。將所有可能的結果作為葉子節點,並將所有的判定過程作為節點,組成一棵判定樹

2.表示集合。處理集合的交,並操作等。

3.查詢。快速定位

資料結構學習 樹

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

資料結構學習

什麼是資料結構 對計算機記憶體中的資料的一種安排。資料結構有那些?優缺點?1.陣列 插入快 知道下標 查詢慢,刪除慢,大小固定 2.有序陣列 比無序的查詢塊,刪除和插入慢,大小固定 3.棧 吃多了吐 個人理解 4.佇列 吃多了拉 個人理解 5.鍊錶 插入快,刪除快,查詢慢 6.二叉樹 查詢 插入 刪...

資料結構學習

鍊錶 class listnode definit self,x self.val x 節點值 self.next none 後繼節點值 例項化節點 n1 listnode 4 節點head n2 listnode 5 n3 listnode 1 構建引用指向 n1.next n2 n2.next ...