zoukankan      html  css  js  c++  java
  • 108. 将有序数组转换为二叉搜索树

    题目链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/submissions/

    解题思路:

    这个题有点类似二分查找,根节点在正中间,左子树的根节点在左边一半数组的正中间,右子树的根节点在右边一半数组的正中间;于是可以递归解决:先确定根节点,然后构造左子树,然后构造右子树, 结束条件类似二分查找(low > high)。

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 class Solution {
    11     public TreeNode sortedArrayToBST(int[] nums) {
    12         if(nums==null)
    13             return null;
    14         return get(nums,0,nums.length-1);
    15     }
    16     public TreeNode get(int []nums,int l,int r)
    17     {
    18         if(l<=r)
    19         {
    20             int mid = (l+r)/2;
    21             TreeNode root = new TreeNode(nums[mid]);
    22             root.left =get(nums,l,mid-1);
    23             root.right = get(nums,mid+1,r);
    24             return root;
    25         }
    26         else
    27         {
    28             return null;
    29         }
    30     }
    31 }
  • 相关阅读:
    CF733F
    P4826
    洛谷P2687 & P1108
    CF42A
    洛谷P1858
    CF1428C
    洛谷P4981
    树形DP
    背包六讲(也不知道为啥就是六个 $QwQ$)
    2020
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/11228481.html
Copyright © 2011-2022 走看看