• 非線性結構
  • 樹是n(n >= 0)個元素的集合:
    • (1)每個元素稱為結點(node);
    • (2)有一個特定的結點,稱為根結點或根(root);
    • (3)除根結點外,其余結點被分成m(m>=0)個互不相交的有限集合,而每個子集又都是一棵樹(稱為原樹的子樹Subtree)
  • 注意
    • n = 0時,稱為空樹
    • 樹只有一個特殊的沒有前驅的元素,稱為樹的根(Root)
    • 樹中除了根結點外,其余元素只能有一個前驅,可以有零個或多個后繼
    • 子樹也有自己的根

樹的概念

  • 結點(node):樹中的數據元素
  • 結點的度(degree):結點擁有的子樹的數目稱為度(該結點的分支數),記作d(v)
  • 葉子結點:結點的度為0,稱為葉子結點leaf、終端結點、末端結點
  • 分支結點:結點的度不為0,稱為非終端結點或分支結點
  • 分支:結點之間的關系
  • 內部結點:除根結點外的分支結點,也不包括葉子結點
  • 樹的度是樹內各結點的度的最大值。? D子樹的度就是3

59df2441cf5be4075000000f

  • 孩子結點(Child):
    • B是A的孩子
  • 雙親結點(Parent):
    • C是E,F的雙親
  • 兄弟結點(Sibling):
    • 具有相同雙親結點的結點
    • B和C是兄弟
  • 祖先結點:
    • 從根結點到該結點所經分支上所有的點
    • A,B,D都是G的祖先結點
  • 子孫結點:
    • 結點的所有子樹上結點都稱為該結點的子孫
    • C的子孫是E,F,J
  • 結點的層次(level):
    • 根結點為第一層,根的孩子為第二層,以此類推,記作L(v)
  • 樹的深度(高度Depth):
    • 樹的層次的最大值
    • 上圖樹深度為4
  • 堂兄弟:
    • 雙親在同一層的結點
    • D,E或F是堂兄弟

59df2441cf5be4075000000f

  • 有序樹
    • 結點的子樹是有順序的(兄弟有大小,先后次序)
  • 無序樹
    • 結點的子樹是無序的,可以交換
  • 路徑
    • 一條線串下來的,前一個都是后一個的雙親結點
  • 路徑長度 ? = ? 路徑上的結點數 – 1 ,也是分支數
  • 森林
    • m(m>=0)顆不相交的樹的集合
    • 對于結點而言,其子樹的集合就是森林。
    • A結點的2顆子樹的集合就是森林

樹的特點

  • 唯一的根
  • 子樹不相交
  • 除根以外,每個元素只能有一個前驅,可以有零個或多個后繼
  • 根結點沒有雙親,葉子結點沒有孩子
  • vi是vj的雙親,則L(vi) = L(vj) – 1, 也就是說雙親比孩子結點的層次小1
  • 堂兄弟的雙親未必是兄弟,例如I,J是堂兄弟,而他們的雙親也是堂兄弟

二叉樹

  • 每個結點最多2顆子樹
    • 二叉樹不存在degree > 2 的結點
  • 是有序樹,左子樹、右子樹是順序的,不能交換次序
  • 即使某個結點有一顆子樹,也要確定是左子樹還是右子樹

 

  • 二叉樹的五種基本形態
    • 空二叉樹
    • 只有一個根結點
    • 根節點只有左子樹
    • 根節點只有右子樹
    • 根節點只有左子樹和右子樹

斜樹

  • 左斜樹,所有結點都只有左子樹
  • 右斜樹,相反
    59df2c3acf5be40750000010

滿二叉樹

  • 一顆二叉樹的所有分支結點都有左右子樹,并且所有葉子結點都在最下面一層
  • 同樣深度二叉樹中,滿二叉樹結點最多
  • k為深度,則結點總數為2**k-1
  • 如下圖,深度為4的15個結點的滿二叉樹
    59df2d42cf5be40750000012

完全二叉樹Complete Binary Tree

  • 除了最后一層的所有的結點都集中在最左邊,其他層都是滿的
  • 完全二叉樹有滿二叉樹引出
  • 區別在于他們的最后一層,完全二叉樹最后一層的結點可以不滿

59df2efccf5be40750000013

59df2f1ccf5be40750000015


二叉樹的性質

59df2f4ecf5be40750000016

1.在二叉樹的第i層上最多有2**(i-1)個結點

2.深度為 k 的二叉樹,最多有 2**k-1 個結點

3.對任何一顆二叉樹,如果其終端結點數為n0,度數為2的結點數為n3,則有n0 = n2 + 1

  • 換句話說,就是葉子結點數 -1 就等于度數為2 的結點數
  • 證明
    59df38cacf5be40750000019

4.其他性質

  • 高度為k的二叉樹,至少有k個結點
  • 含有n個的結點的二叉樹的高度之多為n,最小為 math.ceil(log2 (n+1))

5.具有n個結點的完全二叉樹的深度為 int(log 2 n) + 1或者math.ceil(log2 (n+1))

6.如果有一顆n個結點的完全二叉樹,結點按照層序編號,如下圖
59df3bbccf5be4075000001a

  • 如果i = 1,則結點i是二叉樹的根
  • i > 1,雙親是int(i/2),這是向下取整
  • 雙親結點是 i, 左孩子結點就是 2i, 右孩子結點就是 2i+1
  • 2i > n,則結點 i 無左孩子,即結點i為葉子結點;否則其左孩子結點存在,編號為2i
  • 2i+1 > n,則結點 i 無右孩子;這里不能說明結點i沒有左孩子。否則其右孩子結點存在,編號為2i+1

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87842

(1)
nolannolan
上一篇 2017-10-16 13:47
下一篇 2017-10-16

相關推薦

  • Linux文件查看和管理類命令

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

    2018-03-17
  • Linux系統認知

    前言 在認識Linux系統之前先介紹下計算機的組成構造及其功能: 1,簡單來說計算機可以劃分為軟件系統和硬件系統: (1)軟件系統自不必說就是各種不同的程序,協助用戶更好地使用電腦。 (2)硬件系統指的是主機、顯示器、鼠鍵等硬件設備。 2,按馮諾依曼體系可將計算機按邏輯構成分為: (1)CPU(運算器、控制器)。運算器是數據處理裝置,用來完成對數據的算術運算…

    Linux干貨 2016-09-20
  • 架構師第一天之:Nginx

    nginx: 誕生背景: prefork機制不能支持過大的并發請求, C10K問題的解決 官方站點: http://nginx.org 二次開發版: tengine,openresty 特性: 模塊化設計,較好的拓展性 高可靠性:master/worker架構 支持熱部署:不停機更新配置文件,更換日至文件,更新服務器版本 低內存消耗:10000個keep-a…

    Linux干貨 2016-10-29
  • IO,用戶與組管理,文件,目錄權限管理

           文件統配匹配模式:元字符文件名通配符*匹配任意長度的任意字符[root@localhost ~]# ls /root/D*/root/Desktop  /root/Documents  /root/Downloads ?匹配單個任意字符[root@localhost ~]# …

    Linux干貨 2016-08-05
  • 建立yum源及yum命令的使用

    一、什么是YUM     YUM的全稱為 Yellowdog Update Modifier,其主要目的是為了解決RPM包安裝時的依賴關系的問題。YUM只是一個用于軟件安裝的前端工具,其主要的服務對象還是RPM軟件包。     YUM采用C/S架構,即客戶端與服務器的模…

    Linux干貨 2015-05-11
  • CentOS6.7上編譯安裝php

    環境:CentOS6.7,minimal安裝。 前提條件:安裝了編譯環境,安裝了Apache/Nginx,安裝了MySQL/MariaDB。具體安裝見:http://www.www58058.com/16583    http://www.www58058.com/17497  1、解決依賴關系: 請配置好yum源(系統安裝源及…

    Linux干貨 2016-06-03
欧美性久久久久