国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)入門

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)入門。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

什么是樹(shù)

相信大家剛學(xué)數(shù)據(jù)結(jié)構(gòu)的時(shí)候最先接觸的就是順序表,棧,隊(duì)列等線性結(jié)構(gòu).
而樹(shù)則是一種非線性存儲(chǔ)結(jié)構(gòu),存儲(chǔ)的是具有“一對(duì)多”關(guān)系的數(shù)據(jù)元素的集合

非線性 體現(xiàn)在它是由n個(gè)有限結(jié)點(diǎn)(可以是零個(gè)結(jié)點(diǎn))組成一個(gè)具有層次關(guān)系的集合。把它叫做樹(shù)是因?yàn)樗雌饋?lái)像一棵倒掛的樹(shù),也就是說(shuō)它是根朝上,而葉朝下的
一對(duì)多 體現(xiàn)在比如對(duì)圖中A來(lái)說(shuō),A對(duì)于和B,C都存在聯(lián)系,同理B,C與其他的也均存在關(guān)系

【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)入門,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言,c++,開(kāi)發(fā)語(yǔ)言,學(xué)習(xí)

樹(shù)的常見(jiàn)術(shù)語(yǔ)

節(jié)點(diǎn)的度:一個(gè)節(jié)點(diǎn)含有的子樹(shù)的個(gè)數(shù)稱為該節(jié)點(diǎn)的度(上圖A的為2)
葉節(jié)點(diǎn)/終端節(jié)點(diǎn):度為0的節(jié)點(diǎn)稱為葉節(jié)點(diǎn)(上圖DEFGH節(jié)點(diǎn)為葉節(jié)點(diǎn))
非終端節(jié)點(diǎn)/分支節(jié)點(diǎn):度不為0的節(jié)點(diǎn),(上圖A,B,C)
雙親節(jié)點(diǎn)/父節(jié)點(diǎn):若一節(jié)點(diǎn)含有子節(jié)點(diǎn),此節(jié)點(diǎn)稱為其子節(jié)點(diǎn)的父節(jié)點(diǎn)(上圖A是B的父節(jié)點(diǎn))
孩子節(jié)點(diǎn)或子節(jié)點(diǎn):一節(jié)點(diǎn)含有的子樹(shù)的根節(jié)點(diǎn)稱為該節(jié)點(diǎn)的子節(jié)點(diǎn)(上圖B是A的孩子節(jié)點(diǎn))
兄弟節(jié)點(diǎn):具有相同父節(jié)點(diǎn)的節(jié)點(diǎn)互稱為兄弟節(jié)點(diǎn)(B、C是兄弟節(jié)點(diǎn))
樹(shù)的度:一棵樹(shù)中,最大的節(jié)點(diǎn)的度稱為樹(shù)的度(上圖B的度最大,故樹(shù)的度為3)
堂兄弟節(jié)點(diǎn):雙親在同一層的節(jié)點(diǎn)互為堂兄弟(如上圖D,E互為兄弟節(jié)點(diǎn))
節(jié)點(diǎn)的祖先:從根到該節(jié)點(diǎn)所經(jīng)分支上的所有節(jié)點(diǎn)(上圖A是所有節(jié)點(diǎn)的祖先)
子孫:以某節(jié)點(diǎn)為根的子樹(shù)中任一節(jié)點(diǎn)都稱為該節(jié)點(diǎn)的子孫(上圖所有節(jié)點(diǎn)都是A的子孫)
森林:由n(n>0)棵互不相交的樹(shù)的集合稱為森林

此外,另有兩個(gè)術(shù)語(yǔ)需要單獨(dú)討論一下,即

節(jié)點(diǎn)的層次:從根開(kāi)始定義起,有兩種說(shuō)法
①根為第1層,根的子節(jié)點(diǎn)為第2層…
②根為第0層,根的子節(jié)點(diǎn)為第1層…
樹(shù)的高度或深度:樹(shù)中結(jié)點(diǎn)的最大層次



比如,只有一個(gè)節(jié)點(diǎn),A是第0層,也可以說(shuō)是第1層,兩者都是正確的
但是我更推薦說(shuō)A是第1層,因?yàn)槿绻鸄是第0層,高度或深度就為0,
那么對(duì)于空樹(shù)來(lái)說(shuō),它就只能是-1層,顯然不合理
那么如果A是第1層,高度或深度就為1;而空樹(shù)的高度或深度就為0了,個(gè)人認(rèn)為這種安排更加合理



【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)入門,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言,c++,開(kāi)發(fā)語(yǔ)言,學(xué)習(xí)

樹(shù)的表示

樹(shù)有很多種表示方式如:雙親表示法,孩子表示法、孩子雙親表示法以及孩子兄弟表示法等.

首先我們來(lái)看一種比較差的表示

struct TreeNode
{
	int val;
	struct  TreeNode* child1;
	struct  TreeNode* child2;
	struct  TreeNode* child3;
	//...
};    //缺點(diǎn)很明顯,浪費(fèi)空間,對(duì)于度只有1或0的節(jié)點(diǎn)就會(huì)浪費(fèi)結(jié)構(gòu)體內(nèi)的空間

//或者稍微改進(jìn)一下
struct TreeNode
{
	int val;
	struct  TreeNode* childArray[5];
};  //同理,如果沒(méi)有5個(gè)孩子的節(jié)點(diǎn)也會(huì)浪費(fèi)空間

現(xiàn)在介紹一種非常常用且厲害的方法: 孩子兄弟表示法

struct TreeNode
{
	int val;
	struct  TreeNode* firstChild;
	struct  TreeNode* brother;
};    

此方法的思路流程如下:(鏈表)
【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)入門,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言,c++,開(kāi)發(fā)語(yǔ)言,學(xué)習(xí)

再比如 雙親表示法:只存在父親節(jié)點(diǎn)的指針或者下標(biāo)

#define size 100//樹(shù)中結(jié)點(diǎn)的最大數(shù)量
#define dataType int//樹(shù)結(jié)構(gòu)中數(shù)據(jù)類型
//節(jié)點(diǎn)
typedef struct TreeNode{
    dataType data;//樹(shù)中結(jié)點(diǎn)的數(shù)據(jù)類型
    int parent;//它的父結(jié)點(diǎn)在數(shù)組中的位置下標(biāo)
}TreeNode;
//樹(shù)結(jié)構(gòu):  (上面的方法沒(méi)有寫(xiě)這個(gè)樹(shù)結(jié)構(gòu)是因?yàn)樯厦媸潜举|(zhì)是鏈表,而這里是數(shù)組)
typedef struct {
    PTNode nodes[size];//存放樹(shù)中所有結(jié)點(diǎn)
    int r,nums;//根的位置下標(biāo)和結(jié)點(diǎn)數(shù)
}Tree;

邏輯思路如下(數(shù)組)
【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)入門,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言,c++,開(kāi)發(fā)語(yǔ)言,學(xué)習(xí)

樹(shù)的應(yīng)用

1.文件系統(tǒng):計(jì)算機(jī)的文件系統(tǒng)通常采用樹(shù)形結(jié)構(gòu)來(lái)組織文件和目錄。根節(jié)點(diǎn)是文件系統(tǒng)的根目錄,每個(gè)目錄可以包含子目錄和文件,這種結(jié)構(gòu)可以方便地組織和訪問(wèn)文件。
2.數(shù)據(jù)庫(kù)索引:數(shù)據(jù)庫(kù)中的索引通常使用B樹(shù)或B+樹(shù)這樣的樹(shù)形結(jié)構(gòu)來(lái)實(shí)現(xiàn)。樹(shù)的節(jié)點(diǎn)包含關(guān)鍵字和指向其他節(jié)點(diǎn)的指針,可以快速地搜索和訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
3.解析樹(shù):編譯器常使用樹(shù)形結(jié)構(gòu)來(lái)表示程序的語(yǔ)法結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)代表一個(gè)語(yǔ)法規(guī)則或語(yǔ)句,子節(jié)點(diǎn)表示該語(yǔ)句的組成部分,這種結(jié)構(gòu)可以方便地進(jìn)行語(yǔ)法分析和代碼生成。

:這只是樹(shù)形結(jié)構(gòu)在實(shí)際中的一部分應(yīng)用,它的靈活性和易于理解性使其成為許多領(lǐng)域中常用的數(shù)據(jù)結(jié)構(gòu)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-704586.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)入門】-二叉樹(shù)的基本概念

    【數(shù)據(jù)結(jié)構(gòu)入門】-二叉樹(shù)的基本概念

    個(gè)人主頁(yè):平行線也會(huì)相交 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 平行線也會(huì)相交 原創(chuàng) 收錄于專欄【數(shù)據(jù)結(jié)構(gòu)初階(C實(shí)現(xiàn))】 今天的內(nèi)容可是一個(gè)大頭,比以往學(xué)的內(nèi)容上了一個(gè)檔次。大家對(duì)于這塊內(nèi)容一定要好好學(xué),不是很理解的地方一定要及時(shí)解決,要不然到

    2023年04月10日
    瀏覽(23)
  • 二叉樹(shù)的實(shí)現(xiàn)(C語(yǔ)言數(shù)據(jù)結(jié)構(gòu))

    二叉樹(shù)的實(shí)現(xiàn)(C語(yǔ)言數(shù)據(jù)結(jié)構(gòu))

    目錄 一、以下是我們需要實(shí)現(xiàn)的功能 二、以下是我們具體功能的實(shí)現(xiàn) 1.創(chuàng)建新的結(jié)點(diǎn) 2.通過(guò)數(shù)組生成二叉樹(shù) ?3.先序遍歷 4.中序遍歷 5.后序遍歷? ?6.層序遍歷 7.計(jì)算二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù) 8.查找指定值為x的結(jié)點(diǎn) 9.查找第K層的結(jié)點(diǎn)個(gè)數(shù) 10.統(tǒng)計(jì)二叉樹(shù)葉子結(jié)點(diǎn)的個(gè)數(shù) 11.判斷是否為

    2024年02月04日
    瀏覽(18)
  • 【C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)】二叉樹(shù)的遍歷

    【C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)】二叉樹(shù)的遍歷

    所謂先序遍歷二叉樹(shù),指的是從根結(jié)點(diǎn)出發(fā),按照以下步驟訪問(wèn)二叉樹(shù)的每個(gè)結(jié)點(diǎn): 訪問(wèn)當(dāng)前結(jié)點(diǎn); 進(jìn)入當(dāng)前結(jié)點(diǎn)的左子樹(shù),以同樣的步驟遍歷左子樹(shù)中的結(jié)點(diǎn); 遍歷完當(dāng)前結(jié)點(diǎn)的左子樹(shù)后,再進(jìn)入它的右子樹(shù),以同樣的步驟遍歷右子樹(shù)中的結(jié)點(diǎn); 先序遍歷這棵二叉樹(shù)的過(guò)

    2024年02月04日
    瀏覽(22)
  • 樹(shù)的引進(jìn)以及二叉樹(shù)的基礎(chǔ)講解——【數(shù)據(jù)結(jié)構(gòu)】

    樹(shù)的引進(jìn)以及二叉樹(shù)的基礎(chǔ)講解——【數(shù)據(jù)結(jié)構(gòu)】

    ???????????????????????????????? W...Y的主頁(yè)??? 代碼倉(cāng)庫(kù)分享???? 當(dāng)我們學(xué)習(xí)完前面的數(shù)據(jù)結(jié)構(gòu),難度也就會(huì)上升,但是這個(gè)也是非常重要的數(shù)據(jù)結(jié)構(gòu)。今天我們來(lái)學(xué)習(xí)一種新的數(shù)據(jù)類型——樹(shù)。 目錄 樹(shù)的概念以及結(jié)構(gòu) 樹(shù)的概念 樹(shù)的相關(guān)概念 樹(shù)的表示

    2024年02月07日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】——二叉樹(shù)的基礎(chǔ)知識(shí)

    【數(shù)據(jù)結(jié)構(gòu)】——二叉樹(shù)的基礎(chǔ)知識(shí)

    數(shù)的分類 二叉樹(shù)、多叉樹(shù) 數(shù)的概念 樹(shù)是一種 非線性 的數(shù)據(jù)結(jié)構(gòu),它是由n(n=0)個(gè)有限節(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合。 把它叫做樹(shù)的原因是它看起來(lái)像一顆倒掛的樹(shù),也就是說(shuō)它是跟朝上,而葉朝下的。 有一個(gè)特殊的節(jié)點(diǎn),稱為根節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)沒(méi)有前驅(qū)節(jié)點(diǎn)。 除根節(jié)

    2024年02月07日
    瀏覽(43)
  • 【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)知識(shí)及三種存儲(chǔ)結(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】樹(shù)的基礎(chǔ)知識(shí)及三種存儲(chǔ)結(jié)構(gòu)

    ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ?? ?? 個(gè)人主頁(yè) :阿然成長(zhǎng)日記 ??點(diǎn)擊可跳轉(zhuǎn) ?? 個(gè)人專欄: ??數(shù)據(jù)結(jié)構(gòu)與算法??C語(yǔ)言進(jìn)階 ?? 不能則學(xué),不知?jiǎng)t問(wèn),恥于問(wèn)人,決無(wú)長(zhǎng)進(jìn) ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 把它叫做樹(shù)是因?yàn)樗?/p>

    2024年02月09日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)入門】二叉樹(shù)的遍歷(前序、中序、后序、層序)

    【數(shù)據(jù)結(jié)構(gòu)入門】二叉樹(shù)的遍歷(前序、中序、后序、層序)

    個(gè)人主頁(yè):平行線也會(huì)相交 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 平行線也會(huì)相交 原創(chuàng) 收錄于專欄【數(shù)據(jù)結(jié)構(gòu)初階(C實(shí)現(xiàn))】 什么是二叉樹(shù)遍歷: 二叉樹(shù)遍歷就是按照某種特定的規(guī)則,依次堆二叉樹(shù)中的結(jié)點(diǎn)進(jìn)行相應(yīng)的操作,并且 每個(gè)結(jié)點(diǎn)只操作一次 。訪問(wèn)結(jié)點(diǎn)

    2023年04月09日
    瀏覽(23)
  • 【初階數(shù)據(jù)結(jié)構(gòu)】樹(shù)結(jié)構(gòu)與二叉樹(shù)的基礎(chǔ)概念

    【初階數(shù)據(jù)結(jié)構(gòu)】樹(shù)結(jié)構(gòu)與二叉樹(shù)的基礎(chǔ)概念

    君兮_的個(gè)人主頁(yè) 勤時(shí)當(dāng)勉勵(lì) 歲月不待人 C/C++ 游戲開(kāi)發(fā) Hello,米娜桑們,這里是君兮_,今天帶來(lái)數(shù)據(jù)結(jié)構(gòu)里的重點(diǎn)內(nèi)容也是在筆試,面試中的常見(jiàn)考點(diǎn)——樹(shù)與二叉樹(shù),其中二叉樹(shù)又分為很多種,我們先來(lái)講講基礎(chǔ)的內(nèi)容帶大家一步步入門 在介紹二叉樹(shù)之前,我們得先知道什

    2024年02月08日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)—基礎(chǔ)知識(shí)(11):二叉樹(shù)的遍歷

    數(shù)據(jù)結(jié)構(gòu)—基礎(chǔ)知識(shí)(11):二叉樹(shù)的遍歷

    二叉樹(shù)的遍歷 是指按某條搜索路徑訪問(wèn)樹(shù)中每個(gè)結(jié)點(diǎn),使得每個(gè)結(jié)點(diǎn)均被訪問(wèn)一次,而且僅被訪問(wèn)一次。由于二叉樹(shù)是一種非線性結(jié)構(gòu),每個(gè)結(jié)點(diǎn)都可能有兩棵子樹(shù),因而需要尋找一種規(guī)律,以便使二叉樹(shù)上的結(jié)點(diǎn)能排列在一個(gè)線性隊(duì)列上,進(jìn)而便于遍歷。 由二叉樹(shù)的遞歸

    2024年02月19日
    瀏覽(34)
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)初階(10)----二叉樹(shù)的實(shí)現(xiàn)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)初階(10)----二叉樹(shù)的實(shí)現(xiàn)

    · CSDN的uu們,大家好。這里是C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的第十講。 · 目標(biāo):前路坎坷,披荊斬棘,扶搖直上。 · 博客主頁(yè):?@姬如祎 · 收錄專欄:?數(shù)據(jù)結(jié)構(gòu)與算法 ? ? 目錄 1.?函數(shù)接口一覽 2.?函數(shù)接口的實(shí)現(xiàn) 2.1 BTNode* BuyNode(BTDataType x)?的實(shí)現(xiàn) 2.2?BTNode* CreateTree()?的實(shí)現(xiàn) ?2.3?void

    2023年04月08日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包