acm第十九次樹

2021-09-22 08:36:57 字數 1560 閱讀 7764

一、樹及二叉樹
1、樹的概念----樹的定義

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

①每個元素稱為結點(node);

②有乙個特定的結點,稱為根結點或樹根(root);

③除根結點外,其餘結點能分成m(m>=0)個互不相交的有限集合t0,t1,t2,……tm-1。其中的每個子集又都是一棵樹,這些集合稱為這棵樹的子樹。

2、數的基本概念

①乙個結點的子樹個數,稱為這個結點的度;度為0的結點稱為葉結點;度不為0的結點稱為分支結點;根以外的分支結點又稱為內部結點;樹中各結點的度的最大值稱為這棵樹的度;

②在用圖形表示的樹型結構中,對兩個用線段(稱為樹枝)連線的相關聯的結點,稱上端結點為下端結點的父結點,稱下端結點為上端結點的子結點。

④稱同乙個父結點的多個子結點為兄弟結點。

⑤稱從根結點到某個子結點所經過的所有結點為這個子結點的祖先。

⑥稱以某個結點為根的子樹中的任一結點都是該結點的子孫。

⑦定義一棵樹的根結點的層次為1,其它結點的層次等於它的父結點層次加1。一棵樹中所有的結點的層次的最大值稱為樹的深度

⑧對於樹中任意兩個不同的結點,如果從乙個結點出發,自上而下沿著樹中連著結點的線段能到達另一結點,稱它們之間存在著一條路徑。可用路徑所經過的結點序列表示路徑,路徑的長度等於路徑上的結點個數減1。

⑨森林是棵互不相交的樹的集合。

3、數的儲存結構

①方法1:陣列,稱為「父親表示法」。

const int m = 10; //樹的結點數

struct node

;node tree[m];

優缺點:利用了樹中除根結點外每個結點都有唯一的父結點這個性質。很容易找到樹根,但找孩子時需要遍歷整個線性表。

②方法2:樹型單鏈表結構,稱為「孩子表示法」。每個結點包括乙個資料域和乙個指標域(指向若干子結點)。假設樹的度為10,樹的結點僅存放字元,則這棵樹的資料結構定義如下:

const int m = 10; //樹的度

typedef struct node;

typedef node *tree;

struct node

;tree t;

缺陷:只能從根(父)結點遍歷到子結點,不能從某個子結點返回到它的父結點。

③方法3:樹型雙鏈表結構,稱為「父親孩子表示法」。每個結點包括乙個資料域和二個指標域(乙個指向若干子結點,乙個指向父結點)。假設樹的度為10,樹的結點僅存放字元,則這棵樹的資料結構定義如下:

const int m = 10; //樹的度

typedef struct node;

typedef node *tree; //宣告tree是指向node的指標型別

struct node

;tree t;

④方法4:二叉樹型表示法,稱為「孩子兄弟表示法」。也是一種雙鏈表結構,但每個結點包括乙個資料域和二個指標域(乙個指向該結點的第乙個孩子結點,乙個指向該結點的下乙個兄弟結點)。

typedef struct node;

typedef node *tree;

struct node

;tree t;

ACM 第十九天

積性函式o n 線性篩,篩素數,u n 尤拉函式 n n 1 vis 0 vis 1 1,mu 1 1,phi 1 1 2 for rg int i 2 i n i 7else mu k mu i phi k phi i phi prime j 8 9 可以發現,線性篩分為3部分 1.n本身是素數,...

第十九章 事務

redis的事務是指將多個命令請求打包,一次性地,按順序執行的機制。通過multi exec watch等命令實現事務功能。19.1.1 事務的開始 multi命令的執行代表了乙個事務的開始,會將執行該命令的客戶端由非事務狀態切換成事務狀態 在客戶端狀態的flags屬性中開啟redis multi標...

第十九周作業

1 實現永久重定向,當使用者訪問 www.magedu.org 這個網域名稱時我想讓他跳轉到 www.magedu.com 的主頁面,請寫出配置過程 location 2 rewrite案例 判斷檔案是否存在,要求 當使用者訪問到公司 的時輸入了乙個錯誤的 url 可以將使用者重定向至 www.ma...