二叉樹(shù)相關(guān)定義以及如何進(jìn)行順序存儲(chǔ)
二叉樹(shù)(Binary tree)是樹(shù)形結(jié)構(gòu)的一個(gè)重要類(lèi)型。許多實(shí)際問(wèn)題抽象出來(lái)的數(shù)據(jù)結(jié)構(gòu)往往是二叉樹(shù)形式,即使是一般的樹(shù)也能簡(jiǎn)單地轉(zhuǎn)換為二叉樹(shù),而且二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)及其算法都較為簡(jiǎn)單,因此二叉樹(shù)顯得特別重要。二叉樹(shù)特點(diǎn)是每個(gè)結(jié)點(diǎn)最多只能有兩棵子樹(shù),且有左右之分。
二叉樹(shù)是n個(gè)有限元素的集合,該集合或者為空、或者由一個(gè)稱為根(root)的元素及兩個(gè)不相交的、被分別稱為左子樹(shù)和右子樹(shù)的二叉樹(shù)組成,是有序樹(shù)。當(dāng)集合為空時(shí),稱該二叉樹(shù)為空二叉樹(shù)。在二叉樹(shù)中,一個(gè)元素也稱作一個(gè)結(jié)點(diǎn) 。(來(lái)自百科)
二叉樹(shù)的遍歷指的是從根節(jié)點(diǎn)出發(fā),按照某種次序依次訪問(wèn)二叉樹(shù)中所有的結(jié)點(diǎn),使得每個(gè)結(jié)點(diǎn)被訪問(wèn)一次且僅僅訪問(wèn)一次。
總結(jié):前序遍歷,中序遍歷,后序遍歷可以按照父節(jié)點(diǎn)父節(jié)點(diǎn)遍歷的順序來(lái)劃分,前序就是 父節(jié)點(diǎn)->左子樹(shù)->右子樹(shù),中序是 左子樹(shù)->父節(jié)點(diǎn)->右子樹(shù),后序是 左子樹(shù) -> 右子樹(shù) ->父節(jié)點(diǎn)。
為什么說(shuō)順序存儲(chǔ)只適用于完全二叉樹(shù)呢?
我們可以根據(jù)數(shù)組的下標(biāo)i也能找到左孩子(2i)和右孩子(2I+1),前提是數(shù)組下標(biāo) i=0位丟棄不用,從i=1開(kāi)始存儲(chǔ)樹(shù)的編號(hào)為1的根結(jié)點(diǎn),以此類(lèi)推。所以,這樣即使是將一棵樹(shù)順序存儲(chǔ)到了一個(gè)一維數(shù)組中,結(jié)點(diǎn) i 的左孩子就是2i,右孩子就是2i+1這套公式照樣能夠使用。假設(shè)現(xiàn)在一棵非完全二叉...
二叉樹(shù)和二叉樹(shù)排序不同
為了保留結(jié)點(diǎn)在某種遍歷序列中直接前驅(qū)和直接后繼的位置信息,可以利用二叉樹(shù)的二叉鏈表存儲(chǔ)結(jié)構(gòu)中的那些空指針域來(lái)指示。這些指向直接前驅(qū)結(jié)點(diǎn)和指向直接后繼結(jié)點(diǎn)的指針被稱為線索(thread),加了線索的叉樹(shù)稱為線索二叉樹(shù)[8] 。線索二叉樹(shù)將為二叉樹(shù)的遍歷提供許多遍歷[8] 。
二叉樹(shù)什么意思
(三)完全二叉樹(shù) 對(duì)滿二叉樹(shù),從第一層的結(jié)點(diǎn)(即根)開(kāi)始,由下而上,由左及右,按順序結(jié)點(diǎn)編號(hào),便得到滿二叉樹(shù)的一個(gè)順序表示。據(jù)此編號(hào),完全二叉樹(shù)定義如下:一棵具有n個(gè)結(jié)點(diǎn),深度為K的二叉樹(shù),當(dāng)且僅當(dāng)所有結(jié)點(diǎn)對(duì)應(yīng)于深度為K的滿二叉樹(shù)中編號(hào)由1至n的那些結(jié)點(diǎn)時(shí),該二叉樹(shù)便是完全二...
二叉鏈表存儲(chǔ)結(jié)構(gòu)是什么
二叉鏈表存儲(chǔ)結(jié)構(gòu)是二叉樹(shù)的一種存儲(chǔ)方式。鏈表中結(jié)點(diǎn)的兩個(gè)鏈域分別指向該結(jié)點(diǎn)的第一個(gè)孩子結(jié)點(diǎn)和第二個(gè)孩子結(jié)點(diǎn)。二叉鏈表是樹(shù)的二叉鏈表實(shí)現(xiàn)方式。二叉樹(shù)是邏輯結(jié)構(gòu),二叉鏈表是二叉樹(shù)的物理實(shí)現(xiàn),兩者之間的關(guān)系屬于概念和實(shí)現(xiàn),抽象和具體的關(guān)系。二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu)由一組連續(xù)的存儲(chǔ)單元依次從上...
C++二叉樹(shù)排序代碼 最好是從大到小排列的 謝謝了
最后,我們通過(guò)調(diào)用InOrder函數(shù)對(duì)每個(gè)班級(jí)的二叉樹(shù)進(jìn)行中序遍歷,輸出從低分到高分的學(xué)生信息。這樣,我們就可以按照成績(jī)對(duì)學(xué)生進(jìn)行排序,并將結(jié)果打印出來(lái)。此程序可以實(shí)現(xiàn)多個(gè)班級(jí)學(xué)生信息的輸入與排序。每個(gè)班級(jí)的信息存儲(chǔ)在一個(gè)獨(dú)立的二叉樹(shù)中,通過(guò)中序遍歷可以得到按成績(jī)排序的學(xué)生列表。需要注意的是,...
排序二叉樹(shù)的構(gòu)造過(guò)程一文搞定二叉樹(shù)
既然順序存儲(chǔ)不能滿足二叉樹(shù)的存儲(chǔ)需求,那么考慮采用鏈?zhǔn)酱鎯?chǔ)。由二叉樹(shù)定義可知,二叉樹(shù)的每個(gè)結(jié)點(diǎn)最多有兩個(gè)孩子。因此,可以將結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)定義為一個(gè)數(shù)據(jù)和兩個(gè)指針域。表示方式如圖所示: 二叉樹(shù)遍歷 二叉樹(shù)的遍歷是指從二叉樹(shù)的根結(jié)點(diǎn)出發(fā),按照某種次序依次訪問(wèn)二叉樹(shù)中的所有結(jié)點(diǎn),使得每個(gè)結(jié)點(diǎn)被訪問(wèn)一次,且...
數(shù)據(jù)結(jié)構(gòu)——樹(shù)
完全二叉樹(shù)的深度可以通過(guò)公式log2n + 1計(jì)算,節(jié)點(diǎn)編號(hào)規(guī)則也很獨(dú)特。二叉樹(shù)的存儲(chǔ)可以通過(guò)順序存儲(chǔ)(適合完全二叉樹(shù))和二叉鏈表(每個(gè)節(jié)點(diǎn)包含左右子節(jié)點(diǎn)指針)實(shí)現(xiàn)。創(chuàng)建二叉樹(shù)時(shí),可以使用類(lèi)似于棧的非遞歸方法。二叉樹(shù)的遍歷方法有前序遍歷(根-左-右)、中序遍歷(左-根-右)和后序遍歷(左...
二叉樹(shù)的基本要素有哪些??
(2) 深度為h的二叉樹(shù)最多有2^h-1個(gè)結(jié)點(diǎn)(h>=1),最少有h個(gè)結(jié)點(diǎn);(3) 對(duì)于任意一棵二叉樹(shù),如果其葉結(jié)點(diǎn)數(shù)為N0,而度數(shù)為2的結(jié)點(diǎn)總數(shù)為N2,則N0=N2+1;(4) 具有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)的深度為int(log2n)+1 (5)有N個(gè)結(jié)點(diǎn)的完全二叉樹(shù)各結(jié)點(diǎn)如果用順序方式存儲(chǔ),則結(jié)點(diǎn)之間有如下關(guān)...
完全二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)通常采用順序存儲(chǔ)結(jié)構(gòu)()
正確。一棵深度為k的有n個(gè)結(jié)點(diǎn)的二叉樹(shù),對(duì)樹(shù)中的結(jié)點(diǎn)按從上至下、從左到右的順序進(jìn)行編號(hào),如果編號(hào)為i(1≤i≤n)的結(jié)點(diǎn)與滿二叉樹(shù)中編號(hào)為i的結(jié)點(diǎn)在二叉樹(shù)中的位置相同,則這棵二叉樹(shù)稱為完全二叉樹(shù)。如果對(duì)滿二叉樹(shù)的結(jié)點(diǎn)進(jìn)行編號(hào), 約定編號(hào)從根結(jié)點(diǎn)起, 自上而下, 自左而右。則深度...
樹(shù)和二叉樹(shù)
雙親鏈表的類(lèi)型定義,如下:孩子鏈表 :樹(shù)中每個(gè)結(jié)點(diǎn)的孩子串成一單鏈表。n 個(gè)結(jié)點(diǎn) - n 個(gè)孩子鏈表 表頭數(shù)組 :n 個(gè)頭指針用順序表存儲(chǔ),數(shù)組元素存儲(chǔ):孩子鏈表表示法的類(lèi)型定義,如下:在 孩子鏈表表示法 的基礎(chǔ)上,在用一維數(shù)組順序存儲(chǔ)樹(shù)中的各結(jié)點(diǎn),數(shù)組元素存儲(chǔ):雙親孩子表示法的類(lèi)型定義,...
相關(guān)評(píng)說(shuō):
河口區(qū)超聲: ______ 二叉樹(shù)結(jié)構(gòu)分為:順序存儲(chǔ)結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu). 二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu)指:用一組地址連續(xù)的存儲(chǔ)單元來(lái)存放二叉樹(shù)的數(shù)據(jù)元素. 二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu)中結(jié)點(diǎn)的存放次序是:對(duì)該樹(shù)中每個(gè)結(jié)點(diǎn)進(jìn)行編號(hào),其編號(hào)從小到大的順序就是結(jié)點(diǎn)存放在連續(xù)存儲(chǔ)單元的先后次序. 二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)指:用一個(gè)鏈表來(lái)存儲(chǔ)一棵二叉樹(shù),二叉樹(shù)中每個(gè)結(jié)點(diǎn)用鏈表中的一個(gè)鏈結(jié)點(diǎn)來(lái)存儲(chǔ).
河口區(qū)超聲: ______ 在計(jì)算機(jī)科學(xué)中,二叉樹(shù)是每個(gè)結(jié)點(diǎn)最多有兩個(gè)子樹(shù)的有序樹(shù).通常子樹(shù)的根被稱作“左子樹(shù)”(left subtree)和“右子樹(shù)”(right subtree).二叉樹(shù)常被用作二叉查找樹(shù)和二叉堆.二叉樹(shù)的每個(gè)結(jié)點(diǎn)至多只有二棵子樹(shù)(不存在度大于2的結(jié)點(diǎn)),二...
河口區(qū)超聲: ______ 二叉樹(shù)是遞歸定義的,是有限個(gè)結(jié)點(diǎn)的集合,它或者是空集,或者由一個(gè)根結(jié)點(diǎn)u以及分別稱為左子樹(shù)和右子樹(shù)的兩棵互不相交的二叉樹(shù)u(1)和u(2)組成.若用n,n1和n2分別表示T,u(1)和u(2)的結(jié)點(diǎn)數(shù),則有n=1+n1+n2 .u(1)和u(2)有時(shí)分別稱為T(mén)的第一和第二子樹(shù).因此,二叉樹(shù)的根可以有空的左子樹(shù)或空的右子樹(shù),或者左、右子樹(shù)均為空. 邏輯上二叉樹(shù)有五種基本形態(tài): (1)空二叉樹(shù);(2)只有一個(gè)根結(jié)點(diǎn)的二叉樹(shù); (3)右子樹(shù)為空的二叉樹(shù);(4)左子樹(shù)為空的二叉樹(shù);(5)完全二叉樹(shù)
河口區(qū)超聲: ______ 二叉樹(shù)就是每個(gè)節(jié)點(diǎn)度數(shù)都小于等于2的樹(shù).二叉樹(shù)一般定義為:typedef struct BiNode{ TElemType data;//TElemType是數(shù)據(jù)元素的類(lèi)型 struct BiNode *lchild,*rchild; //左右孩子指針 }BiTNode,*BiTree; 以C語(yǔ)言為例,二叉樹(shù)先序、中序、后序遍...
河口區(qū)超聲: ______ 你知不知道什么叫做二叉樹(shù)?如果你不知道什么是二叉樹(shù),那么下面的解釋對(duì)你沒(méi)有用.設(shè)2叉樹(shù),根結(jié)點(diǎn)是a,葉結(jié)點(diǎn)左b右c 前序:a->b->c http://baike.baidu.com/view/1455146.htm 中序:b->a->c http://baike.baidu.com/view/1455143.htm 后序:b->c->a 復(fù)雜的二叉樹(shù)按照這個(gè)規(guī)律進(jìn)行.歡迎訪問(wèn)我的論壇:) http://www.chinesebloger.com 期待您的支持:)
河口區(qū)超聲: ______ 二叉樹(shù)是一類(lèi)非常重要的樹(shù)形結(jié)構(gòu),它可以遞歸地定義如下:二叉樹(shù)T是有限個(gè)結(jié)點(diǎn)的集合,它或者是空集,或者由一個(gè)根結(jié)點(diǎn)u以及分別稱為左子樹(shù)和右子樹(shù)的兩棵互不相交的二叉樹(shù)u(1)和u(2)組成.若用n,n1和n2分別表示T,u(1)和u(2)的結(jié)點(diǎn)數(shù),則有n=1+n1+n2 .u(1)和u(2)有時(shí)分別稱為T(mén)的第一和第二子樹(shù).
河口區(qū)超聲: ______ 樓上回答的是樹(shù)的存儲(chǔ),不是二叉樹(shù)的存儲(chǔ),主要如下: 1、順序存儲(chǔ):適用于完全二叉樹(shù),如果根從1開(kāi)始編號(hào),則第i結(jié)點(diǎn)的左孩子編號(hào)為2i,右孩子為2i+1,雙親編號(hào)為(i/2)下取整,空間緊密 2、二叉鏈表:適用于普通二叉樹(shù),每個(gè)結(jié)點(diǎn)除了數(shù)據(jù)外,還有分別指向左右孩子結(jié)點(diǎn)的指針,存儲(chǔ)n個(gè)結(jié)點(diǎn)有n+1個(gè)空指針域,存儲(chǔ)密度小于順序存儲(chǔ),但是適用范圍廣,缺陷是正常遍歷只能從雙親向孩子,退回來(lái)一般需要借助棧(或者用遞歸,其實(shí)也是棧) 3、三叉鏈表:同樣適用于普通二叉樹(shù),結(jié)點(diǎn)除了數(shù)據(jù)外,還有左右孩子與雙親的指針,存儲(chǔ)密度低于二叉鏈表,但是可以非常方便地在二叉樹(shù)中遍歷,不需要其他輔助工具
河口區(qū)超聲: ______ 樹(shù)是N個(gè)結(jié)點(diǎn)的有限集.當(dāng)N等于0時(shí),是空樹(shù)(有的書(shū)中定義,要求N大于0);當(dāng)N等于1時(shí),是只有一個(gè)根結(jié)點(diǎn)的樹(shù);當(dāng)N大于1時(shí),除根結(jié)點(diǎn)的其余結(jié)點(diǎn)又可以分為多個(gè)互補(bǔ)相交的有限集,這些集合又是一棵樹(shù),并稱為根的子樹(shù).二叉樹(shù)是樹(shù)的一種,是指每個(gè)結(jié)點(diǎn)至多只有兩棵子樹(shù)的樹(shù).(也就是每個(gè)結(jié)點(diǎn)可以有兩個(gè)子結(jié)點(diǎn),可以有一個(gè)子結(jié)點(diǎn),也可以沒(méi)有子結(jié)點(diǎn))其中沒(méi)有子結(jié)點(diǎn)的結(jié)點(diǎn)就是葉子結(jié)點(diǎn)!如果只看概念不好理解的話,就利用圖理解一下,就好理解多了.如果再想理解深一點(diǎn)的知識(shí)可以看一下嚴(yán)蔚敏編的數(shù)據(jù)結(jié)構(gòu)書(shū).
河口區(qū)超聲: ______ 1、二叉樹(shù)在圖論中是這樣定義的:二叉樹(shù)是一個(gè)連通的無(wú)環(huán)圖,并且每一個(gè)頂點(diǎn)的度不大于3.有根二叉樹(shù)還要滿足根結(jié)點(diǎn)的度不大于2.有了根結(jié)點(diǎn)之后,每個(gè)頂點(diǎn)定義了唯一的父結(jié)點(diǎn),和最多2個(gè)子結(jié)點(diǎn).然而,沒(méi)有足夠的信息來(lái)區(qū)分左結(jié)點(diǎn)...
河口區(qū)超聲: ______ 先定義二叉樹(shù)的存儲(chǔ)結(jié)構(gòu),不同的定義方法相應(yīng)有不同的存儲(chǔ)結(jié)構(gòu)的建立算法.如二叉樹(shù)采用二叉鏈表存儲(chǔ)結(jié)構(gòu),如下:#define OK 1#define OVERFLOW -1typedef int TEle...