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

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

阅读更多

递归构造二叉查找树

 

/**

 * Definition for singly-linked list.

 * public class ListNode {

 *     int val;

 *     ListNode next;

 *     ListNode(int x) { val = x; next = null; }

 * }

 */

/**

 * Definition for binary tree

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

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

 * }

 */

public class Solution {

    public TreeNode sortedListToBST(ListNode head) {

        if(head==null){

            return null;

        }

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

        ListNode p = head;

        while (p!=null){

            list.add(p.val);

            p = p.next;

        }

        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;

    }

}

 

分享到:
评论

相关推荐

    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卡-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 ...

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

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

    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-python.pdf

    标题“_leetcode-python.pdf”所指的知识点: 该标题表明此文件是一份关于LeetCode的Python解题集。LeetCode是一个面向程序员的在线编程题库,提供各种编程语言的算法和数据结构题目,用于帮助编程者提升技能,尤其...

    LeetCode-Java

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

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

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

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

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

    Leetcode部分试题解析

    12. **Lowest Common Ancestor of a Binary Search Tree**:二叉搜索树的最近公共祖先。利用二叉搜索树的性质,可以有效地向上遍历找到最近公共祖先。 13. **Product of Array Except Self**:不包含自身的数组乘积...

    LeetCode leetcode部分题解答代码实现

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

    Leetcode代码以及解答(2)

    Binary Tree Paths **知识点:** - **问题描述:** - 给定一棵二叉树,返回所有从根节点到叶子节点的路径。 - **解决方案分析:** - **深度优先搜索(DFS):** - 从根节点开始 DFS。 - 在叶子节点处记录...

    leetcode答案-leetcode:leetcode

    例如,链表(linked list)常用于模拟线性结构,二叉树(binary tree)则在搜索和排序问题中常见。Python3的标准库中提供了许多数据结构实现,方便我们快速构建和操作。 2. **算法:**LeetCode的问题经常涉及到排序...

    leetcode:leetcode练习

    - 树形结构:二叉树、平衡树等在LeetCode中也频繁出现,如“二叉树的前序遍历”(Binary Tree Preorder Traversal)和“有效的二叉搜索树”(Valid Binary Search Tree)。C++的`std::set`和`std::map`可以用于实现...

    LeetCodeTop100:LeetCode的前100个问题

    - 搜索算法:"二分查找"(Binary Search)在多个问题中发挥关键作用,如"寻找旋转排序数组中的最小值"(Find Minimum in Rotated Sorted Array)。 4. **递归与动态规划** - 递归:"斐波那契数列"(Fibonacci ...

    leetcode答案-leetcode:leetcode上的算法答案

    在LeetCode中,哈希表常用于解决关联问题,如“寻找两个有序数组的中位数”(Median of Two Sorted Arrays),可以将两个数组合并成一个哈希表,然后查找中位数。 5. **二叉树**:树形数据结构,广泛应用于文件系统...

    LeetCode-Python

    3. "Binary Tree Inorder Traversal"(二叉树中序遍历):Python的递归实现使得中序遍历变得简单。 4. "Longest Increasing Subsequence"(最长递增子序列):动态规划的经典应用,Python的状态数组更新清晰明了。 ...

    LeetCode

    在LeetCode中,链表操作题如"Reverse Linked List"要求反转链表,"Merge Two Sorted Lists"则需要合并两个有序链表。 3. 栈和队列:栈(LIFO)和队列(FIFO)是数据结构的基础。在JavaScript中,可以使用数组模拟栈...

    LC-Questions

    二叉树问题如"二叉树的最大路径和"(Maximum Depth of Binary Tree)要求找到从根节点到叶节点的最长路径,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来解决。 哈希表是LeetCode中另一重要工具,它提供快速...

Global site tag (gtag.js) - Google Analytics