今日算法之_65_构建二叉搜索树
前言
Github:https://github.com/HealerJean
1、构建二叉搜索树
假设一个二叉搜索树具有如下特征:
1、节点的左子树只包含小于当前节点的数。
2、节点的右子树只包含大于当前节点的数。
3、所有左子树和右子树自身必须也是二叉搜索树。
1.1、解题思路
看代码吧
1.2、算法
/**
* 构建一颗普通的二叉树(假设二叉树不存在相等的情况)
*/
public TreeNode create(int[] array) {
//待插入的节点
TreeNode root = new TreeNode(array[0]);
for (int i = 1 ; i < array.length ; i++){
TreeNode curNode = root;
while (true){
//Tree
if (array[i] > curNode.val){
if (curNode.right == null){
curNode.right = new TreeNode(array[i]);
break;
}else {
curNode = curNode.right ;
}
}else {
if (curNode.left == null){
curNode.left = new TreeNode(array[i]);
break;
}else {
curNode = curNode.left ;
}
}
}
}
return root ;
}
1.3、测试
@Test
public void test(){
// 树根节点
int[] array = new int[]{1,2,4,3};
preOrder(create(array));
}