任何乙個可以用計算機求解的問題所需的計算時間都與其規模有關.問題的規模越小,解題所需的計算時間往往越少,從而也較容易處理.
分治法設計思想:將乙個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之 遞迴演算法就是由分治法設計思想產生的.
乙個直接或間接地呼叫自身的演算法稱為遞迴演算法.乙個使用函式自身給出定義的函式稱為遞迴函式
迭代是迴圈結構,遞迴是選擇結構
二叉樹(binary tree)是n(n>=0)個節點的有限集合,該集合或者為空集(稱為空二叉樹),或者由乙個根結點和兩棵互不相交的,分別稱為根結點的左子樹和右子樹的二叉樹組成. 根節點沒有雙親 葉節點沒有孩子
特點:
每個結點最多有兩棵子樹(左子樹和右子樹,不能大於兩棵,只有一棵或者是空樹都可以)
左子樹和右子樹是有順序的
即使樹中某結點只有一棵子樹,也要區分它是左子樹還是右子樹(手型對稱特點,訪問左不等於訪問右)
特殊二叉樹:
斜樹:只有左子樹的二叉樹(左斜樹),只有右子樹的二叉樹(右斜樹),結點的個數與二叉樹的深度相同
滿二叉樹:如果所有的分支結點都存在左子樹和右子樹,並且所有葉子都在同一層上,這樣的二叉樹被稱為滿二叉樹, 滿二叉樹是特殊的完全二叉樹
區域性是滿二叉樹,全域性不一定滿二叉樹, 同理可得完全二叉樹
特點:
葉子只能出現在最下一層,出現在其它層就不可能達成平衡.
非葉子節點的度(結點擁有的子樹數)一定是2
在同樣深度的二叉樹中,滿二叉樹的結點個數最多,葉子數最多
3 完全二叉樹
對於深度為k的,有n個結點的二叉樹,當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹(編號連續)
滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹
特點:
葉子結點只能出現在最下兩層;
最下層的葉子一定集中在左邊連續位置
倒是第二層若有葉子結點,一定都在右邊連續位置
如果結點度為1,該結點只有左孩子,不存在只有右子樹的情況;
同樣結點數的二叉樹,完全二叉樹的深度最小
二叉樹性質:1.
2.3.對任何一棵二叉樹,如果其終端結點數(葉子結點數)為n0,度為2的結點數為n2,則n0=n2+1
4.二叉樹的遍歷
前序遍歷
若二叉樹為空,則空操作返回,否則先訪問根結點,然後前序遍歷左子樹,再前序遍歷右子樹
中序遍歷
若樹為空,則空操作返回,否則從根結點開始,中序遍歷根結點的左子樹,然後訪問根結點,最後遍歷右子樹
3. 後序遍歷
若樹為空,則空操作返回,否則從左到右先葉子後結點的方式遍歷訪問左右子樹,最後訪問根結點.
4.層次遍歷
若樹為空,則空操作返回,否則從樹的第一層,也就是 根結點開始訪問,從上到下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問.
二叉樹的基礎知識
為何要重點研究結點最多只有兩個 叉 的樹?二叉樹的結構最簡單,規律性最強 可以證明,所有樹都能轉為唯一對應的二叉樹。二叉樹的定義 定義 是n n 0 個結點的有限集合,由乙個根結點以及兩棵互不相交的 分別稱為左子樹和右子樹的二叉樹組成 邏輯結構 一對二 1 2 基本特徵 每個結點最多只有兩棵子樹 不...
二叉樹的基礎知識
1 二叉樹的定義 深度,節點層數,高度,路徑,葉節點,分支節點,根節點,父節點,左節點,右節點,兄弟節點,祖先節點,子孫節點,左子樹,右子樹。3 二叉樹的性質 性質1 二叉樹第i層上的結點數目最多為2i 1 i 1 性質2 深度為k的二叉樹至多有2k 1個結點 k 1 性質3 包含n個結點的二叉樹的...
二叉樹基礎知識總結
題外話一 樹的定義 樹是一種資料結構,它是由n n 1 個有限結點組成乙個具有層次關係的集合。樹具有的特點有 1 每個結點有零個或多個子結點 2 沒有父節點的結點稱為根節點 3 每乙個非根結點有且只有乙個父節點 4 除了根結點外,每個子結點可以分為多個不相交的子樹。樹的基本術語有 若乙個結點有子樹,...