1樓:
#define telemtype inttypedef struct bitnodebitnode,* bitree;
//先序建立二叉樹
void createbitree(bitree *t)(*t)->data=c;
createbitree(&(*t)->lchild);
createbitree(&(*t)->rchild);}}
2樓:大少爺
先序遞迴建立二叉樹,並對其進行 先序、中序、後序遍歷1.建立二叉樹
2.為了直觀的輸出樹,那麼可以選擇廣度遍歷。查查書應該有。
3.深度的話我這剛好有兩個函式
#include
typedef structtelemtype;
typedef struct bitnodebitnode, *bitree;
}void main()
請問c語言如何建立二叉樹????
二叉樹怎麼看
3樓:檢玉枝禽緞
樹與二叉樹
樹是一種簡單的非線性結構,所有元素之間具有明顯的層次特性。
在樹結構中,每乙個結點只有乙個前件,稱為父結點,沒有前件的結點只有乙個,稱為樹的根結點,簡稱樹的根。每乙個結點可以有多個後件,稱為該結點的子結點。沒有後件的結點稱為葉子結點。
在樹結構中,乙個結點所擁有的後件的個數稱為該結點的度,所有結點中最大的度稱為樹的度。樹的最大層次稱為樹的深度。
二叉樹的特點:(1)非空二叉樹只有乙個根結點;(2)每乙個結點最多有兩棵子樹,且分別稱為該結點的左子樹與右子樹。
二叉樹的基本性質:
(1)在二叉樹的第k層上,最多有2k-1(k≥1)個結點;
(2)深度為m的二叉樹最多有2m-1個結點;
(3)度為0的結點(即葉子結點)總是比度為2的結點多乙個;
(4)具有n個結點的二叉樹,其深度至少為[log2n]+1,其中[log2n]表示取log2n的整數部分;
(5)具有n個結點的完全二叉樹的深度為[log2n]+1;
(6)設完全二叉樹共有n個結點。如果從根結點開始,按層序(每一層從左到右)用自然數1,2,….n給結點進行編號(k=1,2….n),有以下結論:
①若k=1,則該結點為根結點,它沒有父結點;若k>1,則該結點的父結點編號為int(k/2);
②若2k≤n,則編號為k的結點的左子結點編號為2k;否則該結點無左子結點(也無右子結點);
③若2k+1≤n,則編號為k的結點的右子結點編號為2k+1;否則該結點無右子結點。
滿二叉樹是指除最後一層外,每一層上的所有結點有兩個子結點,則k層上有2k-1個結點深度為m的滿二叉樹有2m-1個結點。
完全二叉樹是指除最後一層外,每一層上的結點數均達到最大值,在最後一層上只缺少右邊的若干結點。
二叉樹儲存結構採用鏈式儲存結構,對於滿二叉樹與完全二叉樹可以按層序進行順序儲存。
二叉樹的遍歷:
(1)前序遍歷(dlr),首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹;
(2)中序遍歷(ldr),首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹;
(3)後序遍歷(lrd)首先遍歷左子樹,然後訪問遍歷右子樹,最後訪問根結點。
4樓:大小辰
什麼叫二叉樹的度?帶你了解它的特點
5樓:匿名使用者
根節點只有乙個就是f 因為她的定義是「沒有雙親節點的節點」 ce顯然不滿足 而從整體看 f有兩顆子樹 其中左子樹是以e為根節點的子樹 明白了麼 二叉樹的定義就是遞迴掉用得來的 要明確範圍 先序是根節點 然後左子樹 左子樹也是一棵樹 同樣從根節點開始數 f的左子樹都數完後 才能進行右子樹
6樓:steven8犟
既然是遍歷,肯定要訪問所有節點,先訪問根節點然後是它的左子樹,再是它的右子樹。把子樹當成一顆完整的樹,訪問子樹也需要先訪問它的根節點,再訪問子樹的左子樹,再訪問子樹的右子樹,如此反覆下去直到訪問完這顆二叉樹。
7樓:匿名使用者
前序遍歷的話 順序為根-左-右 應該是fcadbehgp
二叉樹是一種遞迴結構,我們可以以根來命名一顆二叉樹,前序遍歷的話 順序為根-左-右的這個說法是,先訪問根,然後再分別前序遍歷左右子樹。
所以,對於你的圖中的樹(f為根,稱為樹f)來說,先根,那麼先輸出f(1,這個表示輸出這個節點所在的序號);
然後先序遍歷其左子樹(樹c)。那麼對樹c,又要先序遍歷其根,也就是要輸出c(2);
接下來是c的左子樹(樹a),這個左子樹只有乙個根節點a,則輸出a(3);
再接下來是c的右子樹(樹d),仍然先根,則輸出d(4)
下來就是d的左子樹(樹b),先根則輸出b(5);下來就是d的右子樹,d的右子樹空; 則至此,d的右子樹已遍歷完,也就是說c的右子樹也遍歷完成;
在後面就是f的右子樹e了,同上面的過程,可以得到ehgp
8樓:匿名使用者
整棵樹的根節點只有乙個
但每棵子樹都有自己的根節點,從這個意義上說fcedg全是根節點,只是相對不同子樹而已
前序遍歷是說:根節點-遞迴遍歷左子樹-遞迴遍歷右子樹每個子樹,同樣:它自己的根節點-遞迴遍歷它的左子樹-遞迴遍歷它的右子樹
關鍵是,根-左-右,只是說的一次遞迴而已,並不是整棵樹每次遍歷,不是像你標識的那樣,f作為根時,左看到c、a,右看到e、g、p
看到f作為根時,左只有c,右只有e
然後看c作為根,左只有a,右只有d
二叉樹如何建立
9樓:匿名使用者
純c**!!!!可執行
二叉樹和樹如何轉換?比如給出乙個二叉樹,求對應的樹有幾棵,這種題如何做?
10樓:匿名使用者
二叉樹轉換為樹:很簡單,將二叉樹原節點的左子樹不變,右子樹變為其兄弟,即左孩子右兄弟
樹轉換為二叉樹:對樹中每個節點除保留第乙個節點的連線外,斷開其他孩子的連線,然後將其原兄弟連線,原樹中第乙個孩子為左子樹,其餘兄弟均為其左兄弟的右子樹,呵呵,好好理解下,多看看書^
加油~乙個樹林對應多個二叉樹,乙個二叉樹應對應一棵樹
建立二叉樹是怎麼輸入
11樓:匿名使用者
void createtree(btree *t)}輸入為(只是乙個例子)
先序輸入二叉樹:ab
#c##
#先序遍歷:
a b c
先序遍歷(非遞迴):
a b c
中序遍歷:
b c a
中序遍歷(非遞迴):
b c a
後序遍歷:
c b a
後序遍歷(非遞迴):
c b a
層次遍歷(鏈式):
a b c
層次遍歷(順序):
a b cpress any key to continue
關於二叉樹,高分!二叉樹!!!
這些函式都挺好編的,只是在建立的時候我是用先序遞迴建的樹,不知道可不可以。二叉樹!二叉樹是否這樣的,如果是,那答案沒問題的,不然傳一張圖上來 二叉樹問題 先解釋為什麼d對,因為二叉樹的二叉鍊表儲存時,鍊表中的每個結點包含兩個指標,分別指向結點的左孩子和右孩子。而樹的鍊表儲存時,鍊表中的結點的兩個指標...
什麼是二叉樹,舉二叉樹的例子,什麼是二叉樹,舉一個二叉樹的例子
二叉樹樹是一種重要的非線性資料結構,直觀地看,它是資料元素 在樹中稱為結點 按分支關係組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式如下時,可用樹表示源源程式如下的語法結構。又如在資...
二叉樹,跪求答案
手機使用者 includestdlib.h 在二叉樹中,已知中序後序序列求先序序列 對於這個問題,和 在二叉樹中,已知前序中序序列求後序序列 求解思路差不多,只是要對後序序列從後向前依次讀取字元,插入到二叉樹中,再判斷插入當前節點與讀入的字元在中序序列中的先後關係,若讀入字元先,則插入當前節點左子樹...