建立二叉樹

2021-10-06 14:20:47 字數 1136 閱讀 3171

開發工具與關鍵技術:

2023年5月

27

一棵二叉樹是結點的乙個有限集合,該集合或者為空,或者是由乙個根節點加上兩顆分別稱為左子樹和右子樹的、相互不相交的二叉樹組成,每個結點最多只有兩個孩子。

二叉樹的順序儲存結構,用一組連續的的儲存單元存放二叉樹中的元素,即按滿二叉樹的形式存放在一維陣列中。

由於在順序儲存結構中是以結點在陣列中相對位置表示結點之間的關係,因此,一般二叉樹也必須以完成二叉樹的形式來儲存,可能未造成坤儲存空間的浪費。

在二叉樹的鏈式儲存結構,最常用的是二叉鍊錶和三叉鍊錶,二叉鍊錶的每個結點有乙個資料與和兩個指標域,乙個指標指向左孩子,另乙個指向右孩子。如下圖所示:

在建立二叉樹之前首先要想到,二叉樹的三種遍歷方法或二叉樹的者操作,是建立在這個記憶體已經有了這個二叉樹的基礎上來做的,但是事實上記憶體中沒有這棵二叉樹,是需要我們建立二叉樹,那二叉樹是如何建立的呢?.

如果二叉樹自已鍊錶儲存方式,首先第乙個節點先根遍歷,所以第乙個節點肯定是根,然後到它的左子樹b,b的左子樹先根遍歷是d,可是d的左右孩子為空,並且b的孩子為空,到a的右孩子c,c的左孩子是e,然後e的左右孩子是空,然後c的孩子是f,f的左右孩子都為空,這樣整個二叉樹的建立就完成了。

下面我們來看一下建立二叉樹的**,它的序列是ab,用#代表空集,我們做的時候就需要輸入字元,把字元判斷一下,如果是為#,那麼二叉樹為空,首先要分配乙個新的結點,另乙個結點我們當成是跟,如果分配成功我們把ch賦值給data域,然後不斷地遞迴建立它的左子樹和右子樹,其實這是乙個遞迴的過程,我們再次輸入乙個資料域,這個資料域當作他的左子樹,因為這是先根遍歷先做左子樹一直到空為止在做它的右子樹。

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

建立二叉樹

今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...

建立二叉樹

二叉樹在結構上不依賴組織鍊錶 指路法通過根節點與目標節點的相對位置進行定位 define bt left 0 define bt right 1 typedef unsigned long long btpos 結點指標域定義 typedef struct tag btressnode btress...