面試題 04 02 最小高度樹

2021-10-17 03:20:23 字數 935 閱讀 1865

二叉搜尋樹的定義:對於樹中的所有子樹都有,左子樹上的值都小於根節點的值,右子樹上的值都大於根節點上的值。總結一下就是,樹的中序遍歷可以得到乙個公升序序列。

那如何保證高度最小呢?當樹中的任意結點的左右子樹高度差都不超過 1 時,整棵樹的深度最小。

下面是一種構造最小高度樹的思路:

如果序列長度為 0,那麼是一棵空樹。

如果序列長度為 1,那麼只有乙個根節點。

如果長度大於 1,那麼選取中間位置的數賦給根節點,然後前一半遞迴構建左子樹,後一半遞迴構建右子樹。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

int mid =

(l + r)/2

;auto ptr =

newtreenode

(nums[mid]);

//填充根節點

ptr-

>left =

dfs(nums, l, mid -1)

;//構建左子樹

ptr-

>right =

dfs(nums, mid +

1, r)

;//構建右子樹

return ptr;

} treenode*

sortedarraytobst

(vector<

int>

& nums)

};

面試題 04 02 最小高度樹

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

面試題 04 02 最小高度樹

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

面試題 04 02 最小高度樹

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