刷題 力扣 面試題 04 02 最小高度樹

2022-09-21 03:27:09 字數 872 閱讀 7263

題目鏈結

題目描述

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

示例:

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

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

0 / \

-3 9

/ /

-10 5

題目分析

根據題目描述,構造一棵高度最小的bst(二叉排序樹),給定遞增陣列序列

二分構造樹節點,以nums的中間節點為根節點,左右兩邊序列分別構造左右子樹

**

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

private:

treenode* sortedarraytobst(std::vector& nums, int left, int right)

int mid = (right - left) % 2 ? left + (right - left) / 2 + 1 : left + (right - left) / 2;

treenode* root = new treenode(nums[mid]);

root->left = sortedarraytobst(nums, left, mid - 1);

root->right = sortedarraytobst(nums, mid + 1, right);

return root;

}};

簡單題 面試題 04 02 最小高度樹

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

面試題 04 02 最小高度樹

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

面試題 04 02 最小高度樹

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