前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

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));
    }

ContactAuthor