//將有序陣列轉化為二叉搜尋樹
//二叉搜尋樹:每乙個節點的值大於左孩子的值,小於右孩子的值,如果採用中序遍歷,輸出結果為從小到大的
public binarytree arraytobst(t array,int start,int end)
//將陣列的中間值賦給節點,遞迴呼叫完成左子樹和右子樹的建立
int mid = start+(end-start)/2;
root = new binarytree(array[mid],arraytobst(array,start,mid-1),arraytobst(array,mid+1,end));
return root;
}
二叉樹的結構定義如下:
/**
* created by novax_000 on 2016/5/1.
*/public class binarytree
public binarytree()
}
LeetCode 108 將有序陣列轉為二叉搜尋樹
利用深度優先遍歷,每次都取出中間數作為根節點 最開始取陣列中間數作為根節點,然後以該中間數左右分割出兩個子陣列 左邊的子陣列就是左子樹的陣列,右邊的子陣列就是右子樹的陣列 然後再根據各個子樹對應的陣列去取出中間數作為子樹的根節點,以此類推 class solution private treenod...
LeetCode 將有序陣列轉換為二叉搜尋樹
將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10...
將有序陣列轉換為二叉搜尋樹
示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10 5大致思路,二叉搜尋樹的特性就是根節點的左子樹中的數都小於根節點,右子樹都大於根節點。這就想到了用二分法,找到中間的數,則這個數左邊的數比它小,右邊數比...