當前位置:首頁 » 服務存儲 » 哪一個不是樹的存儲形
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

哪一個不是樹的存儲形

發布時間: 2022-05-01 15:38:37

Ⅰ 樹的存儲表示是什麼

樹的存儲結構根據應用的不同而不同,有的從雙親的角度考慮,引出了雙親表示法,有的從孩子的角度考慮,給出孩子表示法,還有的從孩子和兄弟的角度來討論。這些都是人們在大量的應用中所使用的不同形式的存儲結構,這里介紹常用的雙親表示法、孩子表示法、雙親孩子表示法和孩子兄弟表示法。

1.雙親表示法由樹的定義可知,樹中每個結點都有且僅有一個雙親結點,根據這一特性,可以用一組連續的一維數組來存儲樹中的各個結點(一般按層次存儲),數組中的一個元素對應樹中的一個結點,其中包括結點的數據信息以及該結點的雙親在數組中的下標。樹的這種存儲方法稱為雙親表示法,雙親表示法的結點結構如圖1所示,其中,data表示數據域,存儲樹中結點的數據信息,parent表示指針域,存儲該結點的雙親在數組中的下標。

1.雙親表示法的存儲結構2)雙親表示法示例圖1所示的樹的雙親表示如圖1所示,這是一棵樹及其雙親表示法的存儲結構。根結點A無雙親,所以parent的值為-1,G、H和I的parent值為4,表示它們的雙親是下標為4的結點E。這種存儲結構利用任一結點的雙親是唯一的性質,可以方便地直接找到任一結點的雙親結點,但求結點的孩子結點時需要掃描整個數組。

圖1樹的雙親表示法示例

Ⅱ 順序存儲是二叉樹常用的存儲結構嗎

二叉樹的存儲結構
二叉樹是非線性結構,即每個數據結點至多隻有一個前驅,但可以有多個後繼。它可採用順序存儲結構和鏈式存儲結構。
1.順序存儲結構
二叉樹的順序存儲,就是用一組連續的存儲單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為一個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關系,用編號的方法從樹根起,自上層至下層,每層自左至右地給所有結點編號,缺點是有可能對存儲空間造成極大的浪費,在最壞的情況下,一個深度為k且只有k個結點的右單支樹需要2k-1個結點存儲空間。依據二叉樹的性質,完全二叉樹和滿二叉樹採用順序存儲比較合適,樹中結點的序號可以唯一地反映出結點之間的邏輯關系,這樣既能夠最大可能地節省存儲空間,又可以利用數組元素的下標值確定結點在二叉樹中的位置,以及結點之間的關系。圖5-5(a)是一棵完全二叉樹,圖5-5(b)給出的圖5-5(a)所示的完全二叉樹的順序存儲結構。

(a) 一棵完全二叉樹 (b) 順序存儲結構
圖5-5 完全二叉樹的順序存儲示意圖
對於一般的二叉樹,如果仍按從上至下和從左到右的順序將樹中的結點順序存儲在一維數組中,則數組元素下標之間的關系不能夠反映二叉樹中結點之間的邏輯關系,只有增添一些並不存在的空結點,使之成為一棵完全二叉樹的形式,然後再用一維數組順序存儲。如圖5-6給出了一棵一般二叉樹改造後的完全二叉樹形態和其順序存儲狀態示意圖。顯然,這種存儲對於需增加許多空結點才能將一棵二叉樹改造成為一棵完全二叉樹的存儲時,會造成空間的大量浪費,不宜用順序存儲結構。最壞的情況是右單支樹,如圖5-7 所示,一棵深度為k的右單支樹,只有k個結點,卻需分配2k-1個存儲單元。

(a) 一棵二叉樹 (b) 改造後的完全二叉樹

(c) 改造後完全二叉樹順序存儲狀態
圖5-6 一般二叉樹及其順序存儲示意圖

(a) 一棵右單支二叉樹 (b) 改造後的右單支樹對應的完全二叉樹

(c) 單支樹改造後完全二叉樹的順序存儲狀態
圖5-7 右單支二叉樹及其順序存儲示意圖
結構5-1二叉樹的順序存儲

#define Maxsize 100 //假設一維數組最多存放100個元素
typedef char Datatype; //假設二叉樹元素的數據類型為字元
typedef struct
{ Datatype bt[Maxsize];
int btnum;
}Btseq;

2.鏈式存儲結構
二叉樹的鏈式存儲結構是指,用鏈表來表示一棵二叉樹,即用鏈來指示元素的邏輯關系。
通常的方法是鏈表中每個結點由三個域組成,數據域和左右指針域,左右指針分別用來給出該結點左孩子和右孩子所在的鏈結點的存儲地址。其結點結構為:

其中,data域存放某結點的數據信息;lchild與rchild分別存放指向左孩子和右孩子的指針,當左孩子或右孩子不存在時,相應指針域值為空(用符號∧或NULL表示)。利用這樣的結點結構表示的二叉樹的鏈式存儲結構被稱為二叉鏈表,如圖5-8所示。

(a) 一棵二叉樹 (b) 二叉鏈表存儲結構
圖5-8 二叉樹的二叉鏈表表示示意圖
為了方便訪問某結點的雙親,還可以給鏈表結點增加一個雙親欄位parent,用來指向其雙親結點。每個結點由四個域組成,其結點結構為:

這種存儲結構既便於查找孩子結點,又便於查找雙親結點;但是,相對於二叉鏈表存儲結構而言,它增加了空間開銷。利用這樣的結點結構表示的二叉樹的鏈式存儲結構被稱為三叉鏈表。
圖5-9給出了圖5-8 (a)所示的一棵二叉樹的三叉鏈表表示。

圖5-9二叉樹的三叉鏈表表示示意圖
盡管在二叉鏈表中無法由結點直接找到其雙親,但由於二叉鏈表結構靈活,操作方便,對於一般情況的二叉樹,甚至比順序存儲結構還節省空間。因此,二叉鏈表是最常用的二叉樹存儲方式。
結構5-2二叉樹的鏈式存儲
#define datatype char //定義二叉樹元素的數據類型為字元
typedef struct node //定義結點由數據域,左右指針組成
{ Datatype data;
struct node *lchild,*rchild;
}Bitree;

Ⅲ 數據結構來大神。。

1.集合結構2線性3樹形結構(4)圖形結構
2.確定性、能行性、輸入、輸出、有窮性/有限性

Ⅳ 數據結構:關於樹的問題

1.樹的根結點: A
葉子結點: C,I,H,K,M,N,J,E,F
非終端結點: A,B,D,G,L

2.樹的度是: 4
各個結點的度: A\3,B/2,D/4,G/3,L/1

3.樹的深度: 5
各個結點的層數: A\1,B\2,D\2,G/3,L/4
對於結點G,他的父親結點是:
D
祖先結點: A
孩子結點: L/M/K
子孫結點: L/M/K/N
兄弟和堂兄弟 H/I/J/E/F

還有給你一個不太長的資料

1.樹的定義
樹是一種常見的非線性的數據結構。樹的遞歸定義如下:
樹是n(n>0)個結點的有限集,這個集合滿足以下條件:
⑴有且僅有一個結點沒有前件(父親結點),該結點稱為樹的根;
⑵除根外,其餘的每個結點都有且僅有一個前件;
⑶除根外,每一個結點都通過唯一的路徑連到根上。這條路徑由根開始,而未端就在該結點上,且除根以外,路徑上的每一個結點都是前一個結點的後件(兒子結點);
2、結點的分類
在樹中,一個結點包含一個元素以及所有指向其子樹的分支。結點一般分成三類
⑴根結點:沒有前件的結點。在樹中有且僅有一個根結點。
⑵分支結點:除根結點外,有後件的結點稱為分支結點。分支結點亦是其子樹的根;
⑶葉結點:沒有後件的結點稱為樹葉。由樹的定義可知,樹葉本身也是其父結點的子樹。
根結點到每一個分支結點或葉結點的路徑是唯一的。
3、有關度的定義
⑴結點的度:一個結點的子樹數目稱為該結點的度。顯
然,所有樹葉的度為0。
⑵樹的度:所有結點中最大的度稱為該樹的度。4、樹的深度(高度)
樹是分層次的。結點所在的層次是從根算起的。根結點在第一層,根的後件在第二層,其餘各層依次類推。即若某個結點在第k層,則該結點的後件均處在第k+1層。圖(b)中的樹共有五層。在樹中,父結點在同一層的所有結點構成兄弟關系。樹中最大的層次稱為樹的深度,亦稱高度。
5、有序樹和無序樹
按照樹中同層結點是否保持有序性,可將樹分為有序樹和無序樹。如果樹中同層結點從左而右排列,其次序不容互換,這樣的樹稱為有序樹;如果同層結點的次序任意,這樣的樹稱為無序樹。
6、樹的表示方法
樹的表示方法一般有兩種:
⑴自然界的樹形表示法:用結點和邊表示樹,例如上圖採用的就是自然界的樹形表示法。樹形表示法一般用於分析問題。
⑵括弧表示法:先將根結點放入一對圓括弧中,然後把它的子樹按由左而右的順序放入括弧中,而對子樹也採用同樣方法處理:同層子樹與它的根結點用圓括弧括起來,同層子樹之間用逗號隔開,最後用閉括弧括起來。例如圖可寫成如下形式
(r(a(w,x(d(h),e)),b(f),c(s,t(i(m,o,n),j),u)))
7、樹的存儲結構一般有兩種
⑴靜態的記錄數組。所有結點存儲在一個數組中,數組元素為記錄類型,包括數據域和長度為n(n為樹的度)的數組,分別存儲該結點的每一個兒子的下標
⑵動態的多重鏈表。由於樹中結點可以有多個元素,所以可以用多重鏈表來描述比較方便。所謂多重鏈表,就是每個結點由數據域和n(n 為樹的度)個指針域共n+1個域組成

Ⅳ 數據結構,樹的常用存儲方式

存入文本文件,每行:孩子節點-父節點。
這樣也方便用Hadoop進行處理。

Ⅵ 二叉樹的存儲方式有哪些

二叉樹的存儲方式通常有動態存儲。用結構體表示二叉樹的一個節點。用數據域保持保存節點的值,用鏈接語保存兩個孩子的指針。還有就是採用滿二叉樹的順序存儲方式。

Ⅶ 順序存儲表示法為什麼不是樹的存儲形式

順序存儲表示法是樹的存儲形式的原因:順序存儲方式不僅能用於存儲線性結構,還可以用來存放非線性結構,例如完全二叉樹是屬於非線性結構,但其最佳存儲方式是順序存儲方式。

對於一般的家譜樹(一般的多叉樹)來說,我們可以很清楚的看出層次關系,樹的層數表示代數(一共多少代人),樹的最後一層表示最後一代人,由於多叉鏈表法表示的不方便,因此被迫無奈採用孩子兄弟表示法(二叉鏈表法)。

結構

二叉樹的順序存儲就是用一組連續的存儲單元存放二又樹中的結點元素,一般按照二叉樹結點自上向下、自左向右的順序存儲。使用此存儲方式,結點的前驅和後繼不一定是它們在邏輯上的鄰接關系,非常適用於滿二又樹和完全二又樹。根據完全二叉樹和滿二叉樹的特性,假設將圖1中的完全二又樹存放在一維數組bree中,將發現結點的編號正好與數組元素的下標對應。

Ⅷ 數組是一種復雜的數據結構,數組元素之間的關系,既不是線性的,也不是樹型的為什麼錯

首先明確數據具有邏輯結構存儲結構。邏輯結構指數據元素之間的邏輯關系,有四種關系:集合結構、一對一的線性結構、一對多的樹型結構、多對多的圖狀結構。存儲結構指數據實際存放在計算機中的物理結構,只有兩種形式:順序存儲、非順序存儲。

任何一種邏輯結構都可以使用順序存儲或者非順序存儲。

數組的數據元素之間邏輯結構是一對一的線性結構,所以這句話說數組元素之間的關系既不是線性的,就是錯誤的了。

Ⅸ 樹的鏈式存儲結構中每個結點的結構類型主要有哪兩種形式

覺得應該是比較多的