戀上數據結構與算法:二叉樹的介紹(十一)

文章目錄

(一)樹形結構
(二)樹(Tree)的概念01
(三)樹(Tree)的概念02
(四)樹(Tree)的概念03
(五)二叉樹(Binary Tree)的概念
(六)二叉樹(Binary Tree)的性質
(七)真二叉樹(Proper Binary Tree)的介紹
(八)滿二叉樹(Full Binary Tree)的介紹
(九)完全二叉樹(Complete Binary Tree)的概念
(十)完全二叉樹(Complete Binary Tree)的性質01
(十一)完全二叉樹(Complete Binary Tree)的性質02
(十二)完全二叉樹(Complete Binary Tree)的面試題
(十三)國外教材的說法

(一)樹形結構

數據結構中的樹就像是一顆倒掛的樹,如下:
在這裏插入圖片描述
生活中很多地方都用到樹形結構的概念,如下:
在這裏插入圖片描述

(二)樹(Tree)的概念01

在這裏插入圖片描述
說明:

  1. 下面紅色圈圈圈出來的5棵樹,都是權值爲1的節點(以下都簡稱x號節點)的子樹
    在這裏插入圖片描述
  2. 下面紅色圈圈圈出來的分別是3號節點左子樹右子樹
    又比如:51號節點52號節點分別是5號節點左子樹右子樹
    左右子樹都是相對而言的
    在這裏插入圖片描述
  3. 節點的度子樹的個數,比如:1號節點是5,2號節點是2
    在這裏插入圖片描述
  4. 樹的度是所有節點中的最大值,該樹的度是5
  5. 葉子節點度爲0的節點,比如:21、31、51、52、61等等

(三)樹(Tree)的概念02

在這裏插入圖片描述
說明:

  1. 節點的深度是指從根節點到當前節點的唯一路徑上的節點總數,比如31號節點的深度就是3
    在這裏插入圖片描述
  2. 節點的高度是指從當前節點到最遠葉子節點路徑上的節點總數,比如說2號節點的高度不是1(21號子節點不是最遠的),而是3(221、222和223都行)
    在這裏插入圖片描述
  3. 樹的深度是指所有節點深度中的最大值,該樹的深度是4
  4. 樹的高度是指所有節點高度中的最大值,該樹的高度是4
    注意:數據結構的樹是一顆倒掛的樹,我們只需要在把它倒過來,就可以理解深度高度
  5. 一般來說,樹的深度等於樹的高度

(四)樹(Tree)的概念03

在這裏插入圖片描述
說明:有序樹是指任意子節點之間是有順序關係的,比如從左到右遞增
在這裏插入圖片描述

(五)二叉樹(Binary Tree)的概念

在這裏插入圖片描述
說明:

  1. 即使某節點只有一顆子樹,也要區分左右子樹,比如96號節點87號節點右子樹
  2. 只有一個節點的二叉樹,那個節點即使根節點,也是葉子節點,如11號節點

(六)二叉樹(Binary Tree)的性質

在這裏插入圖片描述
說明

  1. 二叉樹的葉子節點的爲0,所以 總節點數=度爲0的節點數+度爲1的節點數+度爲2的節點數
  2. 二叉樹的邊數如下:
    在這裏插入圖片描述
  3. 二叉樹的邊數等於,所以 T=n1+2*n2
    在這裏插入圖片描述
  4. 每一個節點的頭上都有一條邊,唯獨根節點的頭上沒有邊,所以 T=n-1
    在這裏插入圖片描述

(七)真二叉樹(Proper Binary Tree)的介紹

在這裏插入圖片描述

(八)滿二叉樹(Full Binary Tree)的介紹

在這裏插入圖片描述
說明

  1. 同樣高度的二叉樹中,滿二叉樹的葉子節點數量最多、總節點數量最多
    比如下面這顆同高度的二叉樹,就像缺斤少兩一樣
    在這裏插入圖片描述
  2. 滿二叉樹一定是真二叉樹,真二叉樹不一定是滿二叉樹

(九)完全二叉樹(Complete Binary Tree)的概念

在這裏插入圖片描述
說明

  1. 完全二叉樹從根結點倒數第 2 層是一棵滿二叉樹
  2. 滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹
  3. 排列的規則如下:
    在這裏插入圖片描述
  4. 下面這顆二叉樹不是完全二叉樹
    在這裏插入圖片描述

(十)完全二叉樹(Complete Binary Tree)的性質01

在這裏插入圖片描述
注意:因爲h肯定是整數,假設log2n取4.2,由 h-1 <= log2n < h得 h=5
在這裏插入圖片描述
注意:java的int自帶floor功能,比如 int a = 5/2;,a=2

(十一)完全二叉樹(Complete Binary Tree)的性質02

  • 1開始編號的情況
    在這裏插入圖片描述
  • 0開始編號的情況
    在這裏插入圖片描述

(十二)完全二叉樹(Complete Binary Tree)的面試題

在這裏插入圖片描述
分析如下:
在這裏插入圖片描述
最終的數學公式:n0 = floor(n/2 + 1/2)n0 = floor((n+1)/2)
實際編程的公式:n0 = (n+1) >> 1(int自帶floor功能)

其實向下取整(floor)和向上取整(ceiling)是可以互相轉換
在這裏插入圖片描述

(十三)國外教材的說法

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章