LeetCode 面試題 04 02 最小高度樹

2021-10-09 07:51:16 字數 902 閱讀 2225

給定乙個有序整數陣列,元素各不相同且按公升序排列,編寫乙個演算法,建立一棵高度最小的二叉搜尋樹。

思路是由於要建立高度最小的二叉樹,並且輸入陣列是有序的,因此可以先找出中間元素,令其作為根節點,然後對該元素的左邊陣列和右邊陣列執行相同的步驟,直到的子陣列中只有乙個元素或沒有元素為止:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

if(start == end)

int middle =

(start + end)

>>1;

treenode *node =

newtreenode

(nums[middle]);

node-

>left =

sortedarraytobstcore

(start, middle -

1, nums)

; node-

>right =

sortedarraytobstcore

(middle +

1, end, nums)

;return node;

}

treenode*

sortedarraytobst

(vector<

int>

& nums)

return

sortedarraytobstcore(0

, len -

1, nums);}

};

時間複雜度為o(n);由於使用了遞迴,每乙個元素都會在乙個棧內轉換為對應的節點,因此空間複雜度為o(n)。

leetcode 面試題 04 02 最小高度樹

給定乙個有序整數陣列,元素各不相同且按公升序排列,編寫乙個演算法,建立一棵高度最小的二叉搜尋樹。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10 5取陣列中間的數建立根節點root,然後以中間為分界,將...

leetcode 面試題 04 02 最小高度樹

面試題 04.02.最小高度樹 難度簡單35 給定乙個有序整數陣列,元素各不相同且按公升序排列,編寫乙個演算法,建立一棵高度最小的二叉搜尋樹。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 class soluti...

面試題 04 02 最小高度樹

二叉搜尋樹的定義 對於樹中的所有子樹都有,左子樹上的值都小於根節點的值,右子樹上的值都大於根節點上的值。總結一下就是,樹的中序遍歷可以得到乙個公升序序列。那如何保證高度最小呢?當樹中的任意結點的左右子樹高度差都不超過 1 時,整棵樹的深度最小。下面是一種構造最小高度樹的思路 如果序列長度為 0,那麼...