將有序陣列轉換成二叉排序樹

2021-10-09 23:59:37 字數 836 閱讀 5198

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

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

這道題我想了好久,知道平衡二叉樹進行中序遍歷就會變成乙個遞增陣列。反過來給你你個遞增陣列讓你構建乙個平衡二叉樹就懵逼了,結果畫了好久的圖,看了別人的題解才做出來。

畫圖如下:

**如下:

public treenode sortedarraytobst(int nums) 

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

}private treenode buildtree(int nums, int left, int right)

int index = (left + right)/2;

//陣列中間值作為根節點

treenode root = new treenode(nums[index]);

//遞迴根節點的左子樹為陣列0-(index-1)的數

root.left = buildtree(nums, left, index - 1);

//遞迴右子樹

root.right = buildtree(nums, index + 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個部分,遞迴實現節點構建...