LeeCode 109.Convert Sorted List to Binary Search Tree(将排序链表转化为BST) 解题思路和方法
来源:互联网 发布:淘宝的客服电话是多少 编辑:程序博客网 时间:2024/05/16 23:38
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
思路:此题与排序数组很大的不同是链表不知道长度以及上面的值。其整体思路还是中间值作为根节点,但是需要一点策略,不然就会超时。
先整体遍历长度之后,将长度保存,这样就不需要每次都遍历链表了。
代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } *//** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode sortedListToBST(ListNode head) { /** * 先计算出链表的整体长度 * 然后得出中间值,将中间值作为根节点 * 中间值的前的链表截断作为左子树 * 中间值后的链表截断作为右子树 */ int len = 0; ListNode p = head; while(head != null){ head = head.next; len++; } return BST(p,len); } /** * head 头结点 * len 链表长度 */ private TreeNode BST(ListNode head, int len){ if(len <= 0){ return null; } if(len == 1){ return new TreeNode(head.val); } int mid = 0; ListNode p = head; ListNode nextHead = null; //得到中间值 while(++mid < len/2){ p = p.next; } nextHead = p.next;//根节点 p.next = null; TreeNode root = new TreeNode(nextHead.val); //左右子树 root.left = BST(head,mid); root.right = BST(nextHead.next,len-mid-1); return root; } }
0 0
- LeeCode 109.Convert Sorted List to Binary Search Tree(将排序链表转化为BST) 解题思路和方法
- leetCode 108.Convert Sorted Array to Binary Search Tree(将排序数组转换为BST) 解题思路和方法
- Leetcode 109. Convert Sorted List to Binary Search Tree 转化有序链表到BST 解题报告
- Convert Sorted List to Binary Search Tree 将有序链表转化为平衡二叉排序树
- leecode 解题总结:109. Convert Sorted List to Binary Search Tree
- Leetcode 108. Convert Sorted Array to Binary Search Tree 有序数组转化BST 解题报告
- Convert Sorted List to Binary Search Tree 把有序链表转为BST@LeetCode
- Convert Binary Search Tree (BST) to Sorted Doubly-Linked List
- 【Leetcode】Convert Sorted List to Binary Search Tree (BST)
- Convert Binary Search Tree (BST) to Sorted Doubly-Linked List
- leetcode 109. Convert Sorted List to Binary Search Tree 源代码加详细思路和注释
- LeetCode OJ 之 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 解题报告
- Convert Sorted List to Binary Search Tree解题报告
- Convert Sorted Array to Binary Search Tree 将有序数组转化为平衡二叉排序树(重重)
- leecode 解题总结:108. Convert Sorted Array to Binary Search Tree
- 文件下载功能代码示例
- 为什么只有grant usage权限却可以增删改查
- DWR如何获得返回对象
- 第一篇博客从这里开始
- Centost5.5_X64 Linux安装oracle 11.2.0.3 报错
- LeeCode 109.Convert Sorted List to Binary Search Tree(将排序链表转化为BST) 解题思路和方法
- OC
- java异常
- 编辑器类的介绍
- Linux病毒研究与分析
- StringUtils方法全集
- 接口与抽象类的区别
- 华为机试题:亮着电灯的盏数
- Json转换利器Gson之实例二-Gson注解和GsonBuilder