LeetCode之根据序列求平衡二叉树

问题描述:

/** * Given an array where elements are sorted in ascending order, convert it to a height balanced BST. */

给你一个升序的序列,根据这个序列来构造一个平衡二叉树。
解题思路就是先找到根节点,然后递归找到左右子节点。
代码如下:

public static TreeNode sortedArrayToBST(int[] num) {
        return sortedArrayToBST(num, 0, num.length - 1);
    }

    public static TreeNode sortedArrayToBST(int[] num, int start, int end) {
        if (start <= end) {
            int mid = (start + end) / 2;
            TreeNode left = sortedArrayToBST(num, start, mid - 1);
            TreeNode right = sortedArrayToBST(num, mid + 1, end);
            TreeNode node = new TreeNode(num[mid]);
            node.left = left;
            node.right = right;
            return node;
        }
        return null;
    }

递归求子节点时,跟二分查找类似。

    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/u011521382/article/details/51991902
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞