日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理论基础 —— 树

發布時間:2025/3/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【樹的定義】

樹是一種非線性的有序數據結構,能很好地描述有分支和層次特性的數據集合,其是遞歸定義的。

一顆樹是由 n(n>=0) 個元素組成的有限集合,其中:

  • 當 n=0 時,稱為空樹
  • 每個元素稱為結點(node)

對于任何一棵非空樹,滿足以下條件:

  • 有且僅有一個特定的根結點 (root),其沒有前驅。
  • 除根節點外每個結點都有唯一一個前驅結點
  • 每個結點都有 0 或多個后繼結點
  • 當 n>1 時,除根結點之外的其余結點被分成 m(m>0) 個互不相交的有限集合 T1,T2,…,Tm,其中每個集合又是一棵樹,并稱為這個根結點的子樹

【樹的基本概念】

  • 一個結點的子樹個數,稱為結點的度(degree),樹中各節點的度的最大值稱為這棵樹的度(tree degree)
  • 度為 0 的結點稱為葉結點(leaf node),度不為 0 的結點稱為分支結點(branch node),根以外的分支結點稱為內部結點(internal node)
  • 連接兩個相關聯的結點的線段稱為樹枝(branch)
  • 上端結點為下端結點的父節點(parent node),下端結點為上端結點的子結點(children node),同一個父結點的多個子結點互稱兄弟結點(brother node)
  • 從根結點到某個子結點所經過的所有結點稱為這個子結點的祖先(ancestor),以某個結點為根的子樹中的任一結點都是該結點的子孫(descendant)
  • 規定一棵樹的根結點的層次(level)為 1,其它結點的層次等于它的父結點層次 +1
  • 一棵樹中所有的結點的層次的最大值稱為樹的深度(depth)
  • 將樹中結點按照從上層到下層,同層中從左到右的次序依次從 1 開始編號,這種編號方式稱為層序編號(level code),通過層序編號可以將一棵樹變為線性序列
  • 對于樹中任意兩個不同的結點,如果從一個結點出發,自上而下沿著樹中連著結點的線段能到達另一結點,則稱它們之間存在著一條唯一的路徑(path),路徑上經過的邊數稱為路徑長度(path length),從根節點出發,到樹中的其余結點一定存在著一條路徑,不同子樹上的結點之間不存在路徑。
  • 若一棵樹中結點的各子樹從左到右是有次序的,即若交換結點各子樹的相對位置會構成不同的樹,則稱為有序樹(ordered tree),反之,交換結點各子樹的相對位置后為同一棵樹,則為無序樹(unordered tree)
  • m(m>=0)棵互不相交的樹的集合稱為森林(forest)

以下圖為例:

????

  • 根節點:1,葉結點有:3、5、6、8、9,分支結點有:1、2、4、7,內部結點有:2、4、7,這棵樹的度為:3
  • 對于根結點1來說,它是2、3、4的父節點,同時2、3、4是結點1的子節點,它們又是兄弟結點
  • 對于結點8來說,1、4、7是它的祖先;對于4來說,7、8、9是它的子孫
  • 根節點的層次為0,結點2、3、4的層次為1,結點5、6、7的層次為2,結點8、9的層次為3,這棵樹的深度為3
  • 對于結點1與結點8自己存在的路徑,可用1、4、7、8來表示該路徑,該路徑的長度為3

【樹的存儲結構】

樹的存儲結構分為:父親表示法、孩子表示法、父親孩子表示法、孩子兄弟表示法

上述四種方法各有優劣,在應用時應根據實際情況靈活使用,具體內容:點擊這里

【樹的遍歷】

樹中最基本的操作是遍歷。

樹的遍歷是從根節點出發,按照某種次序訪問樹中的所有結點,使得每個結點僅被訪問一次。

根據樹的定義可知:一棵樹由根節點和 m 棵子樹構成,因此只要遞歸的遍歷根節點和 m 棵子樹即可遍歷整棵樹。

樹的遍歷通常分為三種方式:

  • 前序遍歷:先訪問根結點,再從左到右按照先序思想遍歷各棵子樹。(實質上是深度優先遍歷)
  • 后序遍歷:先從左到右遍歷各棵子樹,再訪問根結點。(實質上是深度優先遍歷)
  • 層次遍歷:按層次從小到大逐個訪問,同一層次按照從左到右的次序。(實質上是廣度優先遍歷)

以下圖為例

先序遍歷的結果:125634789

后序遍歷的結果:562389741

層次遍歷的結果:123456789

總結

以上是生活随笔為你收集整理的理论基础 —— 树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。