首先我们要了解二叉查找树(二叉排序树)。树中要遵循:
树中的左子结点的值要大于右子节点的值。由此我们知道要将数组首先进行排序,然后采用二分法进行构建二叉查找树。
#coding:utf-8
class TreeNode:
def __init__(self,val,left,right):
self.val=val
self.left=left
self.right=right
class Soltion:
def reslove(self,list):
list=sorted(list)
r,l=0,len(list)-1
if r<l:
mid=(r+l)/2
root_val=list[mid]
root_left=self.reslove(list[r:mid])
root_right=self.reslove(list[mid+1:l])
else:
return None
return TreeNode(root_val,root_left,root_right)
java:
class TreeNode{
int val;
TreeNode left=null;
TreeNode right=null;
void TreeNode(int val){
this.val=val;
}
}
public class Solution{
public TreeNode BinarySortTree(int[] list,int r,int l){
if(list.length<=0){
return false;
}
int mid;
if(r<l){
mid=(r+l)/2;
TreeNode node=new TreeNode(list[mid]);
node.left=BinarySortTree(list[r:mid]);
node.right=BinarySortTree(list[mid+1:l]);
}
else{
return null;
}
return node;
}
public static void main(String[] args){
list=[.......];
TreeNode root=null;
root=BinarySortTree(list,0,list.length-1);
return root;
}
}