leetcode解題之將有序陣列轉換為二叉搜尋樹

2021-10-02 03:06:49 字數 1032 閱讀 3069

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。

本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。

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

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

0

/ \-3 9

/ /

-10 5

二叉搜尋樹(binary search tree)是指一棵空樹或具有如下性質的二叉樹:

若任意節點的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 若任意節點的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值

任意節點的左、右子樹也分別為二叉搜尋樹 沒有鍵值相等的節點

所以只要中間的那個數作為根節點,然後遞迴設定其左右節點就可以了,具體**如下:

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

public treenode buildtree

(int

nums,

int left,

int right)

int mid =

(right+left+1)

>>>1;

treenode root =

newtreenode

(nums[mid]);

root.left=

buildtree

(nums,left,mid-1)

; root.right=

buildtree

(nums,mid+

1,right)

;return root;

}}

LeetCode108 將有序陣列轉換為二叉搜尋樹

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10...

LeetCode108 將有序陣列轉換為二叉搜尋樹

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10...

leetcode108 將有序陣列轉換為二叉搜尋樹

將有序陣列轉換為二叉搜尋樹。難度 簡單。將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面...