zoukankan      html  css  js  c++  java
  • 108 Convert Sorted Array to Binary Search Tree数组变成高度平衡的二叉树

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

    For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

    Example:

    Given the sorted array: [-10,-3,0,5,9],
    
    One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:
    
          0
         / 
       -3   9
       /   /
     -10  5

    复习了还是不会的地方:
    中间的怎么选取啊?int mid = low + (high - low) / 2;
    然后可以加个helper函数

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public TreeNode sortedArrayToBST(int[] nums) {
            TreeNode node = new TreeNode(0);
            //corner case
            if (nums.length == 0) {
                return node;
            }
            node = helper(nums, 0, nums.length - 1);// -1 should be noticed ahead
            return node;
        }
        
        public TreeNode helper(int[] nums, int low, int high) {      
        //corner case : low > high
            if (low > high) {
                return null;
            }
            int mid = low + (high - low) / 2;
            TreeNode root = new TreeNode(nums[mid]);
            
            root.left = helper(nums, low, mid - 1);
            root.right = helper(nums, mid + 1, high);
            
            return root;
        }
    }
     
  • 相关阅读:
    java中super构造方法的理解
    js和jquery
    hdfs数据导入及spark导入hdfs数据
    mysql设置定时任务
    ssh 设置无密登陆
    实验九 堆排序
    实验8 Hash表的建立和查找
    实验七 图的最小生成树算法
    实验六 huffman树的实现及应用
    实验五 二叉树的建立、遍历及应用
  • 原文地址:https://www.cnblogs.com/immiao0319/p/14984301.html
Copyright © 2011-2022 走看看