leetcode——1382. 将二叉搜索树变平衡

由中序遍历得到数组

用递归构造平衡二叉树

List<Integer> list = new ArrayList<>();
    public TreeNode balanceBST(TreeNode root) {  //根据数组进行平衡二叉树的创建
        inOrder(root);
        return buildBST(0,list.size());
    }

    public TreeNode buildBST(int begin,int end){
        int mid = begin + (end - begin)/2;
        TreeNode node = new TreeNode(list.get(mid));
        if(begin < mid) {
            node.left = buildBST(begin, mid);
        }
        if(mid+1 < end) {
            node.right = buildBST(mid + 1, end);
        }
        return node;
    }

    public void inOrder(TreeNode node){    //中序遍历得到数组
        if(node == null){
            return;
        }else {
            inOrder(node.left);
            list.add(node.val);
            inOrder(node.right);
        }
    }

 

 

——2020.6.23

posted @ 2020-06-23 09:51  欣姐姐  阅读(156)  评论(0编辑  收藏  举报