`
blue2048
  • 浏览: 183725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[leetcode]Convert Sorted Array To Binary Search Tree - java 递归

阅读更多

递归生成二叉查找树

/**

 * Definition for binary tree

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

public class Solution {

    public TreeNode sortedArrayToBST(int[] num) {

        if(num.length==0){

            return null;

        }

        List<Integer> list = new ArrayList<Integer>();

       for(int n : num){

            list.add(n);

        }

        TreeNode root = convert(list, 0, list.size()-1);

        return root;

    }



    private TreeNode convert(List<Integer> list, int start, int end){

        if(start>end){

            return null;

        }

        int mid = start + (end-start)/2;

        TreeNode parent = new TreeNode(list.get(mid));

        TreeNode left = convert(list, start, mid-1);

        parent.left=left;

        TreeNode right = convert(list, mid+1, end);

        parent.right=right;

        return parent;

    }

}

 

分享到:
评论

相关推荐

    leetcode添加元素使和等于-LeetCode:leetcode

    leetcode添加元素使和等于 LeetCode leetcode 指针类型题目 1. 链表 函数参数传入的链表都没有链表的头,从第一个有数据的节点开始 函数返回一个链表,这个链表也没有头 2. 内存分配 二维数组内存分配 二维数组分配...

    leetcode卡-leetcode:利特码解决方案

    leetcode卡 leetcode exercises 3-5 solutions everyday. fighting~ TODO array Best Time to Buy and Sell Stock II Valid Sudoku linked list Palindrome linked list Linked List Cycle trees Convert Sorted ...

    leetcodelintcode差异-LeetcodeJava:LeetcodeJava

    leetcode lintcode差异 Lintcode 解题思路记录 Table of Contents Linked List Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted in ascending order, convert it ...

    LeetCode_java_leetcode_刷题_

    5. **递归与迭代**:如"Binary Tree Inorder Traversal"要求实现二叉树的中序遍历,递归和迭代都是常见的解题策略。 6. **设计模式**:一些题目会涉及单例模式、工厂模式等设计模式的应用,例如"Singleton"题目要求...

    java-leetcode题解之第109题有序链表转换二叉搜索树.zip

    在本压缩包中,我们关注的是Java编程语言与LeetCode平台上的第109题——有序链表转换为二叉搜索树(Convert Sorted List to Binary Search Tree)。这是一道涉及数据结构与算法的问题,主要涵盖了链表操作和二叉搜索...

    java-leetcode题解之第108题将有序数组转换为二叉搜索树.zip

    在这个代码中,`sortedArrayToBST`是主函数,它调用`buildTree`进行递归构建。`buildTree`函数接收一个子数组的范围,找到中间元素并创建节点,然后递归地构建左右子树。 总的来说,解决LeetCode第108题的关键在于...

    Leetcode答案(c++版)

    **1.9 Convert Sorted List to Binary Search Tree (109)** - **问题描述**:给定一个链表,将其转换为平衡二叉搜索树。 - **解题思路**: - 先找到链表的中间节点作为根节点。 - 使用递归方式处理左子树和右子树...

    leetcode java

    - 计算二叉树的最大深度(Maximum Depth of Binary Tree)考察递归的使用。 - 平衡二叉树(Balanced Binary Tree)问题需要检查一棵树是否是平衡的。 **位操作(Bit Manipulation)** 位操作是高级的编程技能,涉及...

    leetcode官方50题算法详解

    2. **将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree)**:利用有序数组的特点,通过递归构建平衡的二叉搜索树。 ### 动态规划 动态规划是解决复杂问题的常用方法,主要通过将问题分解...

    _leetcode-python.pdf

    - Search in Rotated Sorted Array II: 假设按照升序排序的数组在预先未知的某个点上进行了旋转,该问题要求在旋转后的数组中搜索特定元素。 这些知识点涵盖了数据结构和算法的核心概念,以及如何用Python语言实现...

    python-leetcode面试题解之第108题将有序数组转换为二叉搜索树-题解.zip

    二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,它的每个节点都满足以下性质:左子树中的所有节点的值均小于当前节点的值;右子树中的所有节点的值均大于当前节点的值。这种特性使得二叉搜索树在查找、...

    LeetCode-Java

    二叉树问题如"Binary Tree Inorder Traversal",链表问题如"Reverse Linked List",栈的应用如"Valid Parentheses",哈希表的使用则常见于查找和去重问题。 3. **排序和搜索**:快速排序、归并排序、二分查找等是...

    LeetCode轻松:LeetCode算法-轻松-Python3解决方案

    此外,二分查找(binary search)在已排序数组中查找元素是常见的优化策略。 7. **动态规划**:在LeetCode的简单问题中,动态规划是一种常见的算法思想。通过维护一个状态表并逐步构建最优解,我们可以解决很多...

    java面试的笔试题目-leetcode-patterns:按常见模式分组的leetcode问题精选列表

    java面试的笔试题目Leetcode 模式 目录 背景 此存储库适用于任何希望提高软件工程面试问题解决能力的个人。 问题在各自的子主题下分组,以便专注于重复应用常见模式而不是随机解决问题。 所有问题都可用,但有一些...

    LeetCode leetcode部分题解答代码实现

    LeetCode 题解代码实现 LeetCode 是一个非常流行的算法题库,涵盖了各种编程语言和数据结构。该题库提供了大量的编程题目,涵盖了数组、链表、树、动态规划、回溯算法等多种数据结构和算法。因此,本文将对 ...

    leetcode-answer-and-analysis(part).zip_图形图像处理_Java_

    5. **Flatten Binary Tree to Linked List** (二叉树展开为链表): 这是一个关于树的层次遍历的问题,可以使用广度优先搜索(BFS)策略,利用队列(如Java的`Queue`接口)来实现。 6. **Merge Sorted Array** (合并...

    Leetcode部分试题解析

    8. **Search in Rotated Sorted Array**:在旋转有序数组中查找目标值。理解旋转数组的特性,结合二分查找来优化搜索过程。 9. **Roman to Integer** 和 **Integer to Roman**:罗马数字与整数之间的转换。需要掌握...

    LeetCode-Feb2021

    递归是解决复杂问题的有效手段,例如"Binary Tree Postorder Traversal"(二叉树后序遍历)问题,可以通过递归实现。而回溯法常用于解决组合优化问题,如"Combination Sum"(组合求和),在Java中通常结合递归来实现...

    leetcode分类-leetcode:leetcode刷题(中等难度分类)

    递归和迭代是编程中常用的技术,如"Binary Tree Preorder Traversal"(二叉树的前序遍历)和"Fibonacci Number"(斐波那契数列)。递归往往简洁明了,但可能导致大量重复计算;而迭代则更注重效率,但实现起来可能...

Global site tag (gtag.js) - Google Analytics