1樓:匿名使用者
不知道你問的是什麼,我記得二叉樹只有先序,中序,後序遍歷只說,沒有聽說過雙序的.
先序版是這樣的
(1) 訪問根結點權;
(2) 先序遍歷左子樹;
(3) 先序遍歷右子樹;
中序遍歷
(1) 中序遍歷左子樹
(2)訪問根結點
(3)中序遍歷右子樹
後序遍歷
(1)後序遍歷左子樹
(2)後序遍歷右子樹
(3)訪問根結點
2樓:幻星爍爍
雙序遍歷是指對抄於二叉樹的bai每一個結點來說,先訪問這個du結點,再按雙序遍歷zhi它的左子樹dao,然後再一次訪問這個結點,接下來按雙序遍歷它的右子樹
舉個例子:
input
hda##c#b##gf#e###-+a##xb##-c##d##/e##f##
output
hdaadccbbhgffeeg-+aa+xbbx-cc-dd-/ee/ff
二叉樹的前序遍歷是什麼意思? 20
3樓:匿名使用者
序是根據樹根的遍歷位置來說的,前序就是先遍歷根,後遍歷左右子節點比如這樣的樹
a/ \
b c
根是a,前序遍歷就是abc,中序就是bac,後序就是bca,根據a的位置決定
4樓:oi淘盡英雄
按照根-左-右的順序遍歷
二叉樹的遍歷到底是怎麼回事
5樓:手機使用者
包括前序遍歷、中序遍歷、後續遍歷:前序遍歷,就是遍歷二叉樹的左節點-根節點-右節點;中序遍歷,根節點-左節點-右節點;後續遍歷,左節點-右節點-根節點。還有那不懂?
二叉樹中的中序遍歷和先序遍歷是什麼意思?
6樓:星光閃閃夜
中序遍歷
按 左子樹, 根節點,右子樹 的順序遍歷。
先序遍歷 按 根節點, 左子樹 右子樹 的順序遍歷。
比如 6
/ \5 7
/ \1 4
中序: 1 5 4 6 7
先序: 6 5 1 4 7
7樓:匿名使用者
就是訪問二叉樹根結點的順序。
8樓:泣富貴塔嬋
這裡的序是指訪問父節點,其餘按先左兒子,後右兒子中序遍歷就是中間訪問父節點,就是左兒子、父節點、右兒子先序便利就是父節點、左兒子、右兒子
後序遍歷就是左兒子、右兒子、父節點
看你這個圖,先看根節點,中序遍歷先遍歷左子樹左子樹、根節點(f)、右子樹
對於左子樹、右子樹按同樣方式:
左:先遍歷出a,然後父節點c,右子樹再先遍歷左兒子b,父節點d左子樹為acbd
加上根節點f
右子樹繼續這樣,就得到你上面的答案了
void
print(tree
a) //假設為中序遍歷樹的函式
其餘兩個只要調換位置即可
二叉樹遍歷的特點是什麼?
9樓:匿名使用者
每個結點都被訪問到,並且只訪問一次
10樓:歲月
二叉樹的遍歷有三種
三種演算法的訪問路徑是相同的.只是訪問節點的時機不同.
第一次經過時訪問是先序遍歷
第二次經過時訪問是中序遍歷
第三次經過時訪問是後序遍歷"
二叉樹的前序遍歷,中序遍歷和後序遍歷分別有什麼作用
11樓:安暄和墨歌
com/view/1455143://baike?如果你不知道什麼是二叉樹.baidu.baidu://baike,葉結點左b右c
前序.htm"
什麼是二叉樹?二叉樹拿來幹什麼?
12樓:匿名使用者
1、二叉樹在圖論中是這樣定義的:二叉樹是一個連通的無環圖,並且每一個頂點的度不大於3。有根二叉樹還要滿足根結點的度不大於2。
有了根結點之後,每個頂點定義了唯一的父結點,和最多2個子結點。然而,沒有足夠的資訊來區分左結點和右結點。如果不考慮連通性,允許圖中有多個連通分量,這樣的結構叫做森林。
2、二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用於實現二叉查詢樹和二叉堆。
二叉樹的每個結點至多隻有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至多有2^個結點;深度為k的二叉樹至多有2^k-1個結點;對任何一棵二叉樹t,如果其終端結點數為n_0,度為2的結點數為n_2,則n_0=n_2+1。
一棵深度為k,且有2^k-1個節點稱之為滿二叉樹;深度為k,有n個節點的二叉樹,當且僅當其每一個節點都與深度為k的滿二叉樹中,序號為1至n的節點對應時,稱之為完全二叉樹。
13樓:匿名使用者
在電腦科學中,二叉樹是每個結點最多有兩個子樹的有序樹。通常
子樹的根被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用作二叉查詢樹和二叉堆。二叉樹的每個結點至多隻有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不能顛倒。
二叉樹的第i層至多有2的(i-1)次方個結點;深度為k的二叉樹至多有2^(k) -1個結點;對任何一棵二叉樹t,如果其終端結點數(即葉子結點數)為n0,度為2的結點數為n2,則n0 = n2 + 1。
樹和二叉樹的2個主要差別:
1. 樹中結點的最大度數沒有限制,而二叉樹結點的最大度數為2;
2. 樹的結點無左、右之分,而二叉樹的結點有左、右之分。……
樹是一種重要的非線性資料結構,直觀地看,它是資料元素(在樹中稱為結點)按分支關係組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式時,可用樹表示源程式的語法結構。
又如在資料庫系統中,樹型結構也是資訊的重要組織形式之一。一切具有層次關係的問題都可用樹來描述。
樹的概述
樹結構的特點是:它的每一個結點都可以有不止一個直接後繼,除根結點外的所有結點都有且只有一個直接前趨。以下具體地給出樹的定義及樹的資料結構表示。
樹的定義
樹是由一個或多個結點組成的有限集合,其中:
⒈必有一個特定的稱為根(root)的結點;
⒉剩下的結點被分成n>=0個互不相交的集合t1、t2、......tn,而且, 這些集合的每一個又都是樹。樹t1、t2、......tn被稱作根的子樹(subtree)。
樹的遞迴定義如下:(1)至少有一個結點(稱為根)(2)其它是互不相交的子樹
1.樹的度——也即是寬度,簡單地說,就是結點的分支數。以組成該樹各結點中最大的度作為該樹的度,如上圖的樹,其度為3;樹中度為零的結點稱為葉結點或終端結點。
樹中度不為零的結點稱為分枝結點或非終端結點。除根結點外的分枝結點統稱為內部結點。
2.樹的深度——組成該樹各結點的最大層次,如上圖,其深度為3;
3.森林——指若干棵互不相交的樹的集合,如上圖,去掉根結點a,其原來的二棵子樹t1、t2、t3的集合就為森林;
4.有序樹——指樹中同層結點從左到右有次序排列,它們之間的次序不能互換,這樣的樹稱為有序樹,否則稱為無序樹。
樹的表示
樹的表示方法有許多,常用的方法是用括號:先將根結點放入一對圓括號中,然後把它的子樹由左至右的順序放入括號中,而對子樹也採用同樣的方法處理;同層子樹與它的根結點用圓括號括起來,同層子樹之間用逗號隔開,最後用閉括號括起來。如上圖可寫成如下形式:
(a(b(e(k,l),f),c(g),d(h(m),i,j)))
二叉樹1.二叉樹的基本形態
二叉樹也是遞迴定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態:
(1)空二叉樹——(a);
(2)只有一個根結點的二叉樹——(b);
(3)只有左子樹——(c);
(4)只有右子樹——(d);
(5)完全二叉樹——(e)
注意:儘管二叉樹與樹有許多相似之處,但二叉樹不是樹的特殊情形。
2.兩個重要的概念
(1)完全二叉樹——若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的節點都連續集中在最左邊,這就是完全二叉樹。
(2)滿二叉樹——除了葉結點外每一個結點都有左右子葉且葉結點都處在最底層的二叉樹,。
3.二叉樹的性質
(1) 在二叉樹中,第i層的結點總數不超過2^(i-1);
(2) 深度為h的二叉樹最多有2^(h)-1個結點(h>=1),最少有h個結點;
(3) 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,
則n0=n2+1;
(4) 具有n個結點的完全二叉樹的深度為int(log2n)+1
(5)有n個結點的完全二叉樹各結點如果用順序方式儲存,則結點之間有如下關係:
若i為結點編號則 如果i<>1,則其父結點的編號為i/2;
如果2*i<=n,則其左兒子(即左子樹的根結點)的編號為2*i;若2*i>n,則無左兒子;
如果2*i+1<=n,則其右兒子的結點編號為2*i+1;若2*i+1>n,則無右兒子。
(6)給定n個節點,能構成h(n)種不同的二叉樹。
h(n)為卡特蘭數的第n項。h(n)=c(n,2*n)/(n+1)。
4.二叉樹的儲存結構
(1)順序儲存方式
type node=record
data:datatype
l,r:integer;
end;
var tr:array[1..n] of node;
(2)連結串列儲存方式,如:
type btree=^node;
node=record
data:datatye;
lchild,rchild:btree;
end;
5.普通樹轉換成二叉樹
二叉樹很象一株倒懸著的樹,從樹根到大分枝、小分枝、直到葉子把資料聯絡起來,這種資料結構就叫做樹結構,簡稱樹。樹中每個分叉點稱為結點,起始結點稱為樹根,任意兩個結點間的連線關係稱為樹枝,結點下面不再有分枝稱為樹葉。結點的前趨結點稱為該結點的"雙親",結點的後趨結點稱為該結點的"子女"或"孩子",同一結點的"子女"之間互稱"兄弟"。
普通樹轉二叉樹,一般採用左「子女」右「兄弟」的方式來轉化。
完全二叉樹
對滿二叉樹,從第一層的結點(即根)開始,由下而上,由左及右,按順序結點編號,便得到滿二叉樹的一個順序表示。據此編號,完全二叉樹定義如下:一棵具有n個結點,深度為k的二叉樹,當且僅當所有結點對應於深度為k的滿二叉樹中編號由1至n的那些結點時,該二叉樹便是完全二叉樹。
圖4是一棵完全二叉樹。
二叉樹遍歷
遍歷是對樹的一種最基本的運算,所謂遍歷二叉樹,就是按一定的規則和順序走遍二叉樹的所有結點,使每一個結點都被訪問一次,而且只被訪問一次。由於二叉樹是非線性結構,因此,樹的遍歷實質上是將二叉樹的各個結點轉換成為一個線性序列來表示。
設l、d、r分別表示遍歷左子樹、訪問根結點和遍歷右子樹, 則對一棵二叉樹的遍歷有三種情況:dlr(稱為先根次序遍歷),ldr(稱為中根次序遍歷),lrd (稱為後根次序遍歷)。
(1)前序遍歷
訪問根;按前序遍歷左子樹;按前序遍歷右子樹
(2)中序遍歷
按中序遍歷左子樹;訪問根;按中序遍歷右子樹
(3)後序遍歷
按後序遍歷左子樹;按後序遍歷右子樹;訪問根
(4)層次遍歷
即按照層次訪問,通常用佇列來做。訪問根,訪問子女,再訪問子女的子女(越往後的層次越低)(兩個子女的級別相同)
特殊的二叉樹
1. 完全二叉樹
complete binary tree
若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層從右向左連續缺若干結點,這就是完全二叉樹。
2. 滿二叉樹
full binary tree:
一個高度為h的二叉樹包含正是2-1元素稱為滿二叉樹。
某二叉樹的前序遍歷是abdgcefh,中序遍歷是dgbaechf,則起後序遍歷的結點訪問順序是什麼,為什麼
不太記得了,應該是 g d b a e h f c 二叉樹的3中遍歷,知道任何其中2種,就可以建立這個二叉樹。自然就可以得到第3中的遍歷了。具體方法可以翻書或網上查詢相關資料。前序是 根左右 由此可判斷a為根節點,再看中序 由於a為根,所以在中序中根據 左根右 原則a前的即為a的左子樹 dgb 右邊...
寫出先序遍歷的二叉樹的遍歷演算法,怎樣實現二叉樹的前序遍歷的非遞迴演算法
遞迴方式 include typedef struct nodebitnode,bittree void createtree bittree bt void visit char ch void preorder bittree bt void main include include defin...
一顆二叉樹的前序遍歷序列是ABCDEFG後序遍歷序列是CB
首先前序遍歷順序是 根節點 左子樹 右子樹而後序遍歷順序是 左子樹 右子樹 根節點首先知a是根節點 又由後序遍歷知d必然是右子樹的根節點d前面的abc中a是根節點 剩下的bc倆個節點必然是左子樹的答案是2個 如果一顆二叉樹的先序遍歷序列是abdfceg,中序遍歷序列是dfbaceg,則它的後序遍歷序...