目錄給定乙個有序整數陣列,元素各不相同且按公升序排列,編寫乙個演算法,建立一棵高度最小的二叉搜尋樹。
示例:
給定有序陣列: [-10,-3,0,5,9],
乙個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜尋樹:
0 / \
-3 9
/ /
-10 5
對於二叉搜尋樹,樹中的所有子樹都有,左子樹上的值都小於根節點的值,右子樹上的值都大於根節點上的值。總結一下就是,樹的中序遍歷可以得到乙個公升序序列。
為保證樹的高度最小,當樹中的任意結點的左右子樹高度差都不超過 1 時,整棵樹的深度最小。下面是一種構造最小高度樹的思路:
以 [-5,-3,0,1,5,9] 為例,構造過程如下圖所示:
需要注意的是,本例中當vector中元素個數為偶數時,**中預設使用左側的中間數為根結點構建樹,即使用整數除法進行下取整。
同乙個輸入構造的二叉搜尋樹不唯一,因此輸出結果與筆者不同仍可能ac
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
//形參的vector為了減少複製副本數量,一般都
treenode* sortedarraytobst(vector& nums)
};
面試題 04 02 最小高度樹
二叉搜尋樹的定義 對於樹中的所有子樹都有,左子樹上的值都小於根節點的值,右子樹上的值都大於根節點上的值。總結一下就是,樹的中序遍歷可以得到乙個公升序序列。那如何保證高度最小呢?當樹中的任意結點的左右子樹高度差都不超過 1 時,整棵樹的深度最小。下面是一種構造最小高度樹的思路 如果序列長度為 0,那麼...
面試題 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...