C語言 資料結構 二叉樹

2021-09-25 19:33:29 字數 1509 閱讀 5034

一、樹的概念及結構

1.樹是一種非線性的資料結構,它是由n(n>=0)個有限結點組成乙個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點:每個結點有零個或多個子結點;沒有父結點的結點稱為根結點;每乙個非根結點有且只有乙個父結點;除了根結點外,每個子結點可以分為多個不相交的子樹。

2.判斷樹與非樹

a.子樹是不相交的;

b.除了根節點外,每個節點有且只有乙個父節點。

c.一顆n個節點的樹有n-1條邊。

3.樹的表示

;二、二叉樹的概念及結構

1.一棵二叉樹是結點的乙個有限集合,該集合或者為空,或者是由乙個根節點加上兩棵別稱為左子樹和右子樹的二叉樹組成。

二叉樹的特點:

a. 每個結點最多有兩棵子樹,即二叉樹不存在度大於2的結點。

b. 二叉樹的子樹有左右之分,其子樹的次序不能顛倒。

2.特殊的二叉樹

a. 滿二叉樹:乙個二叉樹,如果每乙個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,如果乙個二叉樹的層數為k,且結點總數是(2^k) -1 ,則它就是滿二叉樹。

b.完全二叉樹:完全二叉樹是效率很高的資料結構,完全二叉樹是由滿二叉樹而引出來的。對於深度為k的,有n個結點的二叉樹,當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。 要注意的是滿二叉樹是一種特殊的完全二叉樹。

3.二叉樹的儲存結構

二叉樹一般可以使用兩種結構儲存,一種順序結構,一種是鏈式結構。

4.順序儲存

順序結構儲存就是使用陣列來儲存,一般使用陣列只適合表示完全二叉樹,因為不是完全二叉樹會有空間的浪費。而現實中使用中只有堆才會使用陣列來儲存。二叉樹順序儲存在物理上是乙個陣列,在邏輯上是一顆二叉樹。

5.鏈式儲存

二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。 通常的方法是鍊錶中每個結點由三個域組成,資料域和左右指標域,左右指標分別用來給出該結點左孩子和右孩子所在的鏈結點的儲存位址 。鏈式結構又分為二叉鏈和三叉鏈。

二叉鏈

struct binarytreenode

三叉鏈

struct binarytreenode

資料結構 二叉樹(c語言)

一下 是二叉樹的相關 包括二叉樹的根據前序遍歷建立二叉樹。根據前序遍歷 中序遍歷與後續遍歷依次查詢二叉樹的各個節點。include 定義二叉樹節點資料型別 typedef struct bitnode bitnode,bitree bitree為指向bitnode這種結構的指標 前序構造二叉樹函式 ...

C語言 資料結構 二叉樹

實驗報告內容 一 實驗目的 要求 1 熟練掌握二叉樹的二叉鍊錶儲存結構的建立 二叉樹的三種遍歷演算法以及基於遍歷的幾種操作的實現。2 編寫適當的主函式和相關函式,使實驗題目執行出正確結果。3 當場程式設計 除錯 編譯。4 程式具有一定的健壯性 可讀性,盡量簡潔。5 程式執行完成後分別存檔,上交實驗報...

資料結構之二叉樹 C語言

二叉樹是一種依託指標建立的資料結構。二叉樹結構體中包含資料域和兩個指標,乙個指向左樹,乙個指向右樹。開始的第乙個結點稱為二叉樹的根節點,需要建立乙個指向根節點的指標,這樣才能訪問整棵二叉樹。我所知的有兩種建立方式。第一種是設個函式的返回型別為二叉樹結點結構體。例如 typedef struct tr...