資料結構(C)樹(1)

2021-10-25 07:49:36 字數 1085 閱讀 9497

1.概念與性質

樹是一種非線性結構,與前面的鍊錶棧與佇列(線性結構)不同。樹(tree)是由n(n>=0)個節點構成的有限集合。

當n=0,就為空樹。

當n>0,必有乙個樹根(root),除了樹根,其餘的節點可以劃分為很多個子集,也叫子樹。

樹的邊說有方向性的,只能從樹根指向某一節點,「只能從上到下」,有且只有一條路徑,反之亦然。

術語:節點的度是指乙個節點其子樹的個數。

樹的度樹中所有節點中最大的度數。

子節點對某一節點而言,其子樹的跟節點。父節點反過來。

節點的層次:根節點為第一層,依次往下數。樹的深度也就說最大層次。

2.二叉樹

任意節點的最大度為2。若二叉樹不為空,則必然有乙個根節點,以及有兩個分別為左子樹和右自樹的子樹。這兩個子樹當然也是二叉樹。

二叉樹的鏈式儲存code

struct treenode
struct treenode*t;

t=null;/*建立很簡單*/

3.二叉樹的操作

二叉樹的節點count

思路:若二叉樹位空,則返回0;

若不為空,澤必有乙個root和兩個子樹。所以二叉樹的節點數count為1+左子樹的節點數+右子樹的節點數。

code

int count(struct treenode){

if(t==

null)

return

0; return

1+count(t->left)+

count

(t->right)

;}/*這裡用到了遞迴的思想,因為為二叉樹,根據二叉樹的特點,用函式遞迴呼叫*/

下一節會講到求葉節點(度數為0的節點,「樹葉」)的數量,樹高,以及如何遍歷二叉樹來確定樹的形狀。

C 資料結構 樹

樹的定義是遞迴的,用樹來定義樹。因此,樹 以及二叉 樹 的許多演算法都使用了遞迴。結點 node 表示樹中的資料元素。結點的度 degree of node 結點所擁有的子樹的個數。樹的度 degree of tree 樹中各結點度的最大值。葉子結點 leaf node 度為 0 的結點,也叫終端結...

資料結構 樹的學習 (1)

樹的概念 樹是n n 0 個結點的有限集,n 0 是稱為空樹,在任意一顆非空樹中 1 有且僅有乙個特定的稱為根的結點,2 當n 1時,其餘節點可分為m個互不相交的有限集,每個集合本身又是一棵樹,並且稱為根的子樹。結點分類 結點擁有的子樹數稱為結點的度。度為0的結點稱為葉結點或終端結點,度不為0的結點...

資料結構1 紅黑樹

紅黑樹是一顆二叉平衡查詢樹。使用情況 不斷地有資料插入 性質 每個節點不是紅色就是黑色 根節點總是黑色 如果節點是紅色,則它的子節點必是黑色的 從根節點到葉節點的每條路徑,黑高相同紅黑樹的三種修正方式 變色 左旋 右旋左旋操作 對x左旋,x的右子節點為y y的左子節點賦值給x的右節點,並將x賦值給y...