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

2021-10-07 14:22:53 字數 688 閱讀 1421

題目

將有序陣列轉換為二叉搜尋樹(力扣:108)

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。

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

分析二叉樹中序遍歷的逆序。

找到陣列的中間位置,作為根節點,這時將陣列分為2個部分,遞迴實現節點構建即可。

**實現

/**

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

** @param nums

* @return

*/public treenode sortedarraytobst(int nums)

return createbst(nums, 0, nums.length - 1);

}private treenode createbst(int nums, int l, int r)

int middle = l + (r - l) / 2;

treenode node = new treenode(nums[middle]);

node.left = createbst(nums, l, middle - 1);

node.right = createbst(nums, middle + 1, r);

return node;

}

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

示例 給定有序陣列 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...

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

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