思路:
如何將陣列放進去,就要用到遞迴的思想啦。將陣列分成兩部分一部分構成左子樹,一部分構成右子樹。
如【1,2,3,4,5,6,7,8,9,10】
6
1,2,3,4,5 7,8,9,10
6
3 9
12 45 78 10
以此類推。便可以構成二叉樹了
class
btree()
:def
__init__
(self)
: self.data=
none
self.lchild=
none
self.rchild=
none
defarrtotree
(arr,start,end)
: t=btree(
)if start>=end:
####千萬要有等號,加入沒有等號,會損失一層,
#同時這也是遞迴結束的條件。
mid=
int(
(start+end+1)
/2) t.data=arr[mid]
t.lchild=arrtotree(arr,start,mid-1)
t.rchild=arrtotree(arr,mid+
1,end)
else
: t=
none
return t
怎樣編寫乙個程式,把乙個有序整數陣列放到二叉樹中
分析 本題考察二叉搜尋樹的建樹方法,簡單的遞迴結構。關於樹的演算法設計一定要聯想到遞迴,因為樹本身就是遞迴的定義。而,學會把遞迴改稱非遞迴也是一種必要的技術。畢竟,遞迴會造成棧溢位,關於系統底層的程式中不到非不得以最好不要用。但是對某些數學問題,就一定要學會用遞迴去解決。include includ...
把乙個有序整數陣列放到二叉樹中
include stdio.h include stdlib.h include string.h struct student void arraytotree int a,int len,struct student p else void display tree struct student...
乙個整數陣列中最大字陣列二
返回整數陣列中最大子陣列的和2 1.題目 返回乙個整數陣列中最大子陣列的和。2.要求 1 要求程式必須能處理1000個元素 2 每個元素都是int32型別的。3.設計思路 處理1000個元素時讓使用者自己輸入想要的陣列長度,看看執行時出處理時間的長短,再在源程式中改善這一問題。處理大數溢位時,由於隨...