iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
自我挑戰組

c 語言與 python 的30天之旅系列 第 14

C 語言與資料結構之樹(tree)

  • 分享至 

  • xImage
  •  

樹(tree)

樹是一種非線性的分層資料結構,由由邊連接的節點組成。它模擬了分支結構,類似於自然樹,但通常以倒置繪製,根在頂部。
關鍵元件和術語:

  • 節點:樹狀結構中儲存資料的元素。
  • 邊緣:連接兩個節點的鏈接,代表一種關係。
  • 根:樹狀結構中最頂層的節點,沒有父節點。
  • 父節點:具有一或多個子節點的節點。
  • 子節點:直接連接到較低層級的父節點的節點。
  • 葉節點(或外部節點):沒有子節點的節點。
  • 內部節點:至少具有一個子節點的節點。
  • 子樹:樹的一部分,本身可以被視為樹,根植於原始樹的節點之一。
  • 高度:從根節點到葉節點的邊數上限。
  • 深度:從根節點到特定節點的邊緣數。
    特點:
  • 層次結構:資料分層組織,具有明確的父子關係。
  • 非線性:與陣列或鍊錶不同,元素不是按順序儲存的。
  • 無循環:沒有返回祖先節點的迴圈或路徑。每個子節點只有一個父節點,但根節點除外。
    在 C 語言中可以用 結構(struct) 來表示樹的節點
struct Node {
    int data;
    struct Node* first_child;
    struct Node* second_child;
    struct Node* third_child;
    .
    .
    .
    struct Node* nth_child;
};

二元樹(Binary Tree)

二元樹是一種樹狀結構,其中每個節點最多有兩個子節點。這兩個孩子通常被稱為左孩子和右孩子。它廣泛應用於二元搜尋樹和堆等應用。

// 用結構來表示樹的節點 
struct Node {
    int data;
    struct Node* left;
    struct Node* right;
};

// 建立樹節點函式
struct Node* newNode(int item) {
    struct Node* temp = 
       (struct Node*)malloc(sizeof(struct Node));
    temp->key = item;
    temp->left = temp->right = NULL;
    return temp;
}

上一篇
C 語言與資料結構之 堆疊(stack)
系列文
c 語言與 python 的30天之旅14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言