有序鍊錶轉換二叉搜尋樹 python

2021-09-25 08:19:00 字數 1558 閱讀 9950

題目描述:

給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。

本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。

示例:

給定的有序鍊錶:[-10,-3,0,5,9],

乙個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜尋樹:

#對構造平衡的二叉搜尋樹的函式定義

def constructtree(node,left_tree,right_tree):

if len(left_tree) != 0:

node.left = treenode(left_tree[len(left_tree)/2])

constructtree(node.left,left_tree[:len(left_tree)/2],left_tree[len(left_tree)/2+1:])

if len(right_tree) != 0:

node.right = treenode(right_tree[len(right_tree)/2])

constructtree(node.right,right_tree[:len(right_tree)/2],right_tree[len(right_tree)/2+1:])

tree = treenode(list_[len(list_)/2])

constructtree(tree,list_[:len(list_)/2],list_[len(list_)/2+1:])

return tree

菜鳥一枚,**僅供參考,如有問題,望指正~

有序鍊錶轉換二叉搜尋樹

題目描述 給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。思路分析 我們可以利用兩個指標來訪問鍊錶中的中間元素。當找到鍊錶中的中間元素後,我們將鍊錶從中間元素的左側斷開,做法是使用乙個...

有序鍊錶轉換二叉搜尋樹

題目描述 給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜...

有序鍊錶轉換二叉搜尋樹

給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 ...