1. 程式人生 > >資料結構筆記(6)

資料結構筆記(6)

樹與二叉樹
1.樹在這裡插入圖片描述
在這裡插入圖片描述
2.二叉樹
在這裡插入圖片描述
在這裡插入圖片描述
二叉樹的性質:

  1. 在非空二叉樹中,第i層的結點總數不超過2i-1, i>=1;

  2. 深度為h的二叉樹最多有2h-1個結點(h>=1),最少有h個結點;

  3. 對於任意一棵二叉樹,如果其葉結點數為N0,而度數為2的結點總數為N2,則N0=N2+1;

  4. 具有n個結點的完全二叉樹的深度為log2(n+1);

5)有N個結點的完全二叉樹各結點如果用順序方式儲存,則結點之間有如下關係:

若I為結點編號則 如果I>1,則其父結點的編號為I/2;

如果2I<=N,則其左兒子(即左子樹的根結點)的編號為2I;若2I>N,則無左兒子;

如果2I+1<=N,則其右兒子的結點編號為2I+1;若2I+1>N,則無右兒子。

6)給定N個節點,能構成h(N)種不同的二叉樹,其中h(N)為卡特蘭數的第N項,h(n)=C(2*n, n)/(n+1)。

7)設有i個枝點,I為所有枝點的道路長度總和,J為葉的道路長度總和J=I+2i。
3.樹的實現
template
class BiTree
{
public:
Bitree(){root=Creat(root);}
~Bitree(){Release(root);}
void PreOrder(){PreOrder(root);}
void InOrder(){InOrder(root);}
void PostOrder(){PostOrder(root);}
void LeverOrder();
private:
BiNode*root;
BiNode*Creat(BiNode*bt);
void Release(BiNode*bt);
void PreOrder(BiNode*bt);
void InOrder(BiNode*bt);
void PostOrder(BiNode*bt);
};
4.二叉樹中的遍歷
在這裡插入圖片描述


5.二叉查詢樹
二叉查詢樹定義:又稱為是二叉排序樹(Binary Sort Tree)或二叉搜尋樹。二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹:

  1. 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;

  2. 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點的值;

  3. 左、右子樹也分別為二叉排序樹;

  4. 沒有鍵值相等的節點。

二叉查詢樹的性質:對二叉查詢樹進行中序遍歷,即可得到有序的數列。
6.二叉樹邏輯順序
在這裡插入圖片描述

相關推薦

資料結構筆記6

樹與二叉樹 1.樹 2.二叉樹 二叉樹的性質: 在非空二叉樹中,第i層的結點總數不超過2i-1, i>=1; 深度為h的二叉樹最多有2h-1個結點(h>=1),最少有h個結點; 對於任意一棵二叉樹,如果其葉結點數為N0,而度數為2的

資料結構——圖6——深入分析BFS演算法

DFS的不足和BFS演算法 雖然我們知道根據DFS演算法我們可以找到所有的,由起始節點到目標節點的所有路徑,但並不代表那條路是最短的或者是最佳的。就像我們上篇文章所說的一樣,對於同一幅圖,非遞迴演算法找到的路徑就明顯比遞迴演算法找的要短。 回顧我們之前提到的BFS的基本思想:從起始頂

資料結構筆記

線性結構           ——線性表示及其實現 一.多項式的表示(項數n和各項係數 ,指數i)      法一:順序儲存結構直接表示——陣列各分量對應多項式各項,a[i]: 項的係數            eg:                   下標i

資料結構筆記

typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList Status GetElem L(LinkList L,int i,ElemType &e){ p=L->ne

資料結構筆記——線性表Linear List

個人學習筆記,不喜勿噴。 一開始寫程式碼時糾結於在C++中是用struct還是用class。 C++可以使用struct和class,並且C++中與C中的struct不一樣,它更像class。 用struct實現資料結構,class用於物件。 線性表:由同類型

Python 資料結構筆記1:Python資料結構的效能

本系列部落格是閱讀《Problem Solving with Algorithms and Data Structures using Python》的筆記,原文連結 1、列表 List 索引和賦值是兩個非常常用的操作。這個兩個操作不論列表多長,它們的時間複雜

資料結構筆記靜態連結串列的實現和基本操作

一、靜態連結串列的定義 用資料替代指標,來描述單鏈表。首先,資料的元素由兩個資料域組成,data和cur。資料域data,用來存放資料元素,即要處理的資料;遊標cur相當於單鏈表中的next指標。 //線性表的靜態單鏈表儲存結構 #define MAXSIZ

Python資料分析學習筆記6資料規約實戰--以主成分分析PCA為例

一、相關理論: 1、資料規約:產生更小且保持資料完整性的新資料集。意義在於降低無效、錯誤資料;降低儲存成本;少量且具有代表性的資料大幅加快,主要分為以下兩類: ①屬性規約:屬性合併或刪除無關維,目標是尋找最小子集使子集概率分佈儘可能與原來相同。     常用方法: (

python資料分析與挖掘學習筆記6-電商網站資料分析及商品自動推薦實戰與關聯規則演算法

這一節主要涉及到的資料探勘演算法是關聯規則及Apriori演算法。 由此展開電商網站資料分析模型的構建和電商網站商品自動推薦的實現,並擴充套件到協同過濾演算法。 關聯規則最有名的故事就是啤酒與尿布的故事,非常有效地說明了關聯規則在知識發現和資料探勘中起的作用和意義。 其中有

C++傳智筆記6:socket客戶端發送報文接受報文的api接口

內存泄露 rcp 分配內存 strcpy light cpp tac 第三方 _file__ #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" #include "string.

ASP.NET學習筆記6——jQuery的Ajax基本操作

stat password ash page serve () c# content scrip 說明(2017-11-5 15:49:29): 1. jQuery裏封裝了三個方法,$.get,$.post和$.ajax,其中$.ajax是返回原生的XMLHttpReque

Linux第二周學習筆記6

font anaconda 如果 使用 oot zhong 提示 就是 bsp Linux第二周學習筆記(6)2.12.MV命令mv命令:用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。------------------------------------

es6筆記6 Iterator 和 for...of循環

fun 手寫 symbol als 指針 undefine 表示 ret 結束 概要 js中的數組、對象,加上ES6中增加的Map、Set四種數據集合。 Iterator提供了一種機制,為各種不同的數據結構提供統一的訪問機制。任何數據結構只要部署Iterator接口,就可以

TensorFlow學習筆記6讀取數據

官網 com 記錄 mat target 項目 AD 包含 技術 Overview 之前幾次推送的全部例程,使用的都是tensorflow預處理過的數據集,直接載入即可。例如: 然而實際中我們使用的通常不會是這種超級經典的數據集,如果我們有一組圖像存儲在磁盤上

python學習筆記6--循環語句

start 循環語句 odi 語句 python學習 col end body AR 循環語句如下: for i in range(start, end): //註意 前閉後開 coding for i in 列表名: coding while 條

Linux自學筆記6:Linux文件系統及文件類型

linux文件類型 linux文件系統 Linux的文件系統:跟文件系統(rootfs)root filesystem LSB,FHS:linux發行標準1 bin boot dev etc home lib lib64 media mnt opt proc root run

數據結構筆記1-線性表

常數時間 順序表 復雜度 個數 shadow col ces 序表 ESS 1.順序表是一種隨機存取結構。 存取結構:存取結構是在一個數據結構上對查找操作的時間性能的一種描述。(1)隨機存取結構:指在一個數據結構上進行查找的時間性能是O(1),即查找任意一個數據元素的時間

Rust語言學習筆記6

course lin key ati clas mem nsh lis The Traits(特質) // 特質 pub trait Summary { fn summarize(&self) -> String; } pub struct NewsA

數據結構筆記2——二叉查找樹

ins fontsize retrieve dmi amp spa treenode oot found 樹 定義: 一顆樹是一些節點的結合,這個集合可以是空集,若非空,則一棵樹由稱為(root)的根節點與0個或多個非空的子樹組成。一棵樹由N個節點與N-1條邊構成。 深度

數據結構筆記7算法設計思想

目標 算法 元素 code 前綴 規模 一次 劃分 n) 貪婪算法 調度問題(略) 哈夫曼編碼問題(Huffman) 前綴碼,歧義(待補) 算法: 假設字符的個數為C 一顆樹的權等於其樹葉的頻率的和,任意選取最小權的兩棵樹T1和T2,並任意形成以T1和T2為子樹的新樹