[LeetCode]Convert Sorted List to Binary Search Tree
来源:互联网 发布:java可变参数 定义 编辑:程序博客网 时间:2024/05/19 13:55
题目描述
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
给定一个已排好序的链表,构建其相应的二叉搜索树。
解题思路
看到题目,映入眼帘的肯定是递归方法:
- 找到待构建链表的中间位置,将其对应的treeNode提出作为根节点(root);
- 构建中间位置左边链表的BST,返回结果作为root.left;
- 构建 中间位置的右边链表的BST,返回结果作为root.right;
代码实现中,我没有直接操作链表,而是首先根据linked list生成对应的ArrayList<TreeNode>,然后对ArrayList<TreeNode>进行递归求解,具体解法请看下面代码。
代码
/** * 根据已排序列表构建二叉搜索树 * @param head * @return */public static TreeNode sortedListToBST(ListNode head) {ArrayList<TreeNode> list = new ArrayList<TreeNode>();if(head==null)return null;//通过链表的值构建treenode并存储到list中while (head != null) {list.add(new TreeNode(head.val));head = head.next;}return buildBST(0, list.size() - 1, list);}
/** * 构建二叉搜索树 * @param start 待构建二叉树的treeNode列表的起始位置 * @param end 待构建二叉树的treeNode列表的结束位置 * @param list * @return */public static TreeNode buildBST(int start, int end, ArrayList<TreeNode> list) {int middle = start + (end - start) / 2;//中间节点TreeNode root = list.get(middle);if(start==end){return root;}if (middle - 1 >= start) {root.left = buildBST(start, middle - 1, list);}if (middle + 1 <= end) {root.right = buildBST(middle + 1,end, list);}return root;}
0 0
- 【LeetCode】Convert Sorted Array to Binary Search Tree && Convert Sorted List to Binary Search Tree
- LeetCode[Tree]: Convert Sorted List to Binary Search Tree
- [leetcode][list][dfs] Convert Sorted List to Binary Search Tree
- LeetCode: Convert Sorted List to Binary Search Tree
- [LeetCode]Convert Sorted List to Binary Search Tree
- LeetCode : Convert Sorted List to Binary Search Tree
- [Leetcode] Convert Sorted List to Binary Search Tree
- Leetcode: Convert Sorted List to Balanced Binary Search Tree
- [LeetCode] Convert Sorted List to Binary Search Tree
- leetcode 66: Convert Sorted List to Binary Search Tree
- leetcode Convert Sorted List to Binary Search Tree
- LeetCode Convert Sorted List to Binary Search Tree
- leetcode Convert Sorted List to Binary Search Tree
- LeetCode:Convert Sorted List to Binary Search Tree
- [LeetCode]Convert Sorted List to Binary Search Tree
- [Leetcode]Convert Sorted List to Binary Search Tree
- [leetcode]Convert Sorted List to Binary Search Tree
- Leetcode: Convert Sorted List to Binary Search Tree
- Oracle体系逻辑结构
- Backbone中Router的使用
- Android编译问题小汇总
- Raw-OS源码分析之消息系统-Queue_Buffer
- 基于JQuery框架的AJAX实例代码
- [LeetCode]Convert Sorted List to Binary Search Tree
- Android应用中实现系统“分享”接口
- Positive-definite matrix
- 《App,这样设计才好卖》
- java Process抽象类
- 模拟赛 数列的期望
- 如何找回回收站删除的图片
- plot函数参数
- VS注释与取消注释快捷键