日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

根据后续数组重建搜索二叉树

發(fā)布時(shí)間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据后续数组重建搜索二叉树 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:

給定一個(gè)整型數(shù)組arr,已知其中沒(méi)有重復(fù)值,判斷arr是否可能是節(jié)點(diǎn)值類(lèi)型為整型的搜索二叉樹(shù)后續(xù)遍歷的結(jié)果

思路:根據(jù)搜索二叉樹(shù)的性質(zhì),比后續(xù)數(shù)組最后一個(gè)元素值小的數(shù)組會(huì)在數(shù)組的左邊,比數(shù)組最后一個(gè)元素值大的數(shù)組會(huì)在數(shù)組的右邊。

def isPostArray(arr):if arr == None or len(arr)==0:return Falsereturn isPost(arr,0,len(arr)-1)def isPost(arr,start,end):if start == end:return Trueless = -1more = endfor i in range(start,end):if arr[i] < arr[end]:less = ielse:if end == more:more = i + 1if less == -1 or more == end:return isPost(arr,start,end-1)if less!=more-1:return Falsereturn isPost(arr,start,less) and isPost(arr,less+1,end-1)可參考例子: arr = [2,1,3,6,5,7,4] 4 <4 = [2,1,3] >4 = [6,5,7]

進(jìn)階問(wèn)題:如果整型數(shù)組arr中沒(méi)有重復(fù)值,且已知是一顆搜索二叉樹(shù)的后續(xù)遍歷結(jié)果,通過(guò)數(shù)組arr重構(gòu)二叉樹(shù)。

class Node:def __init__(self,value):self.value = valueself.left = Noneself.right = Nonedef ArrayToBST(array):if array == None or len(array)==0:return Nonereturn ToBST(arr,0,len(array)-1)def ToBST(arr,start,end):if start > end:return Nonenode = Node(arr[end])less = -1more = endfor i in range(start,end):if arr[end] > arr[i]:less = ielse:if more == end:more = inode.left = ToBST(arr,start,less)node.right = ToBST(arr,more,end-1)return node

?

總結(jié)

以上是生活随笔為你收集整理的根据后续数组重建搜索二叉树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。