將有序陣列轉換為二叉搜尋樹

2022-05-16 06:31:42 字數 782 閱讀 4783

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

示例:給定有序陣列: [-10,-3,0,5,9],

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

0/ \

-3   9

/   /

-10  5

思路:這裡,如果我們知道二叉樹的中序遍歷就是公升序序列的話,那這道題就比較清晰了

選擇中間位置左邊的數字作為根節點,則根節點的下標mid = (left + right) / 2,樹結構多用遞迴實現。

// go

//definition for a binary tree node.

type treenode struct

func sortedarraytobst(nums int) *treenode

func helper(nums int, left int, right int) *treenode

mid := (left + right) >> 1 // 等同於(left + right) / 2,位運算效率較高

// 注意:go 中的位運算子優先順序高於加減,必須帶括號!

root := &treenode

root.left = helper(nums, left, mid-1)

root.right = helper(nums, mid+1, right)

return root

}

將有序陣列轉換為二叉搜尋樹

示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10 5大致思路,二叉搜尋樹的特性就是根節點的左子樹中的數都小於根節點,右子樹都大於根節點。這就想到了用二分法,找到中間的數,則這個數左邊的數比它小,右邊數比...

將有序陣列轉換為二叉搜尋樹

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

將有序陣列轉換為二叉搜尋樹

題目 將有序陣列轉換為二叉搜尋樹 力扣 108 將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。分析二叉樹中序遍歷的逆序。找到陣列的中間位置,作為根節點,這時將陣列分為2個部分,遞迴實現節點構建...