Convert Sorted List to Binary Search Tree
题目地址:https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/#/description
题目:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
解题思路:
用recursion的办法来建立tree。需要注意的是curr需要设为全局变量,而且需要在结束左边recursion之后往后指一个。
代码:
题目:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
解题思路:
用recursion的办法来建立tree。需要注意的是curr需要设为全局变量,而且需要在结束左边recursion之后往后指一个。
代码:
public class Solution { ListNode curr; public TreeNode sortedListToBST(ListNode head) { if(head == null){ return null; } curr = head; int len = getLen(head); return helper(len); } private TreeNode helper(int len){ if(len == 0){ return null; } TreeNode left = helper(len / 2); TreeNode root = new TreeNode(curr.val); curr = curr.next; TreeNode right = helper(len - len / 2 - 1); root.left = left; root.right = right; return root; } private int getLen(ListNode head){ if(head.next == null){ return 1; } ListNode curr = head; int len = 0; while(curr != null){ curr = curr.next; len++; } return len; } }

Comments
Post a Comment