面試題 04 02 最小高度樹

2021-10-23 01:20:06 字數 906 閱讀 1649

題目:

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

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

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

/ \ 

-3   9 

/   / 

-10  5 

解題思路:

1.有序陣列組成的最小高度樹是二叉搜尋樹

2.由於陣列是有序的,取陣列中間元素作為根節點

3.利用遞迴,取左半邊陣列的中間元素作為根節點的左子節點,取右半邊陣列的中間元素作為根節點的右子節點

4.返回根節點

**實現:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

int l=0;

int r=s-1;

return arraytobst(nums,l,r);

}treenode* arraytobst(vector& nums,int l,int r)

int m=(r+l)>>1;

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

root->left=arraytobst(nums,l,m-1);

root->right=arraytobst(nums,m+1,r);

return root;}};

耗時和記憶體使用情況:

面試題 04 02 最小高度樹

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

面試題 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...