排序二叉樹

2022-08-28 15:57:19 字數 2200 閱讀 8892

排序二叉樹

二叉樹:作為基本資料結構的一種,是紅黑樹,b樹等樹形結構的基礎。而排序二叉樹是按照二叉樹的結構來組織的。在本文中採用鍊錶結構來建立二叉樹。排序二叉樹的    基本原理:

排序二叉樹是將歸併排序的基本思想構建二叉樹結構,再用中序遍歷的規則來遍歷樹的各個節點,輸出的結果就是有序序列(本文是將一組無序的整型數值儲存在二叉樹中,通過中序遍歷二叉樹將數值輸入,而得到一組按照由小到大排序的序列,從而間接實現了排序。所以下文的解釋和說明都以此為例)。

插入節點的過程:

1.判斷根節點是否為空?如果為空,插入節點作為根節點,結束;否則,轉2;

2.將要插入的數值和比較節點的數值進行比較。如果插入插入數值大於等於節點數值轉3;否則轉4;

3.如果比較節點的右子樹為空,將比較節點的右指標指向插入節點,結束;否則,將比較節點的右子樹的根節點作為新的比較節點,轉2;

4.如果比較節點的左子樹為空,將比較節點的左指標指向插入節點,結束;否則,將比較節點的左子樹的根節點作為新的比較節點,轉2;

通過上述的插入過程實現的二叉樹,可以得出:對於根節點,它左邊的所有節點的值都小於它;而它右邊的所有節點是數字都大於或等於它。中序遍歷的過程是「左子節點->父節點->右子節點」 ,這樣數值的輸出便具有了一定的順序,這個規則的不斷重複,就是歸併排序思想的體現。同時該插入過程符合遞迴的特性。

演算法分析(時間複雜度):

查詢過程:二叉樹查詢過程的時間和二叉樹的高度成正比。假設二叉樹的高度為n,則查詢最大值,最小值,前繼結點後和後繼節點的時間都可以在o(n)時間內實現。所以樹的高度直接決定查詢的效率。對於擁有n個節點的二叉樹,形成完全二叉樹時樹的高度是最小的,即最小為lg(n);

刪除和插入過程:在二叉樹刪除和插入過程,查詢過程是必須的前奏;所以插入和刪除的最小為(lg(n)+o(1)),其中o(1)為插入和刪除的時間。 

1 #include "

stdafx.h

"2 #include 3 #include 45//

非遞迴方法插入節點

6void insertbtree(node *root,int

value)720

else

2131

else

323536}

37else

3844

else

4548}49

}50} 51}

5253

//採用遞迴的方法插入節點

54void insertbtreere(node *root,int

value)

5562

else

6374

else

7578}79

else

8089

else

9093}94

}95}96

9798

//將乙個整數陣列中的數字按照歸併排序的原理進行儲存

99void buildbtree(int *p, int n,node *root)

100124

else

125128

}129

else

130136

else

137140

}141

}142

143}

144145

}146

147//

按照中序遍歷二叉樹

148void midsearchbtree(node *proot)

149156

}157

158int

main()

159;

165 buildbtree(a,5

,croot);

166midsearchbtree(croot);

167 printf("\n"

);168

169while(scanf_s("

%d",&input)&& input!=1

)170

173midsearchbtree(croot);

174 printf("\n"

);175

176 insertbtreere(croot,10

);177

midsearchbtree(croot);

178 printf("\n"

);179

return0;

180 }

二叉樹,排序二叉樹

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...