Convert Sorted List to Binary Search Tree
2014-12-28 11:32
330 查看
Convert Sorted List to Binary Search Tree
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; 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 root ; public int nums[]; public TreeNode sortedListToBST(ListNode head) { ListNode temp = head; int length = 0; while(temp != null){ length ++; temp = temp.next; } nums = new int[length]; temp = head; for(int i = 0; i < nums.length; i++){ nums[i] = temp.val; temp = temp.next; } return sortedArrayToBST(nums); } public TreeNode sortedArrayToBST(int[] num) { if(num.length == 0) return root; if(1 == num.length){ return new TreeNode(num[0]); } int middle = num.length / 2; root = new TreeNode(num[middle]); createBST(num, 0, middle - 1); createBST(num, middle + 1, num.length - 1); return root; } /** * 根据num数组,创建一棵二叉查找树 * @param num * @param start * @param end */ private void createBST(int num[], int start, int end){ int middle = 0; if(start <= end && start >= 0 && end <num.length){ middle = (start + end) / 2; insertNode(root, num[middle]); createBST(num, start, middle - 1); createBST(num, middle + 1, end); } } /** * 向root所指的BST二叉查找树中插入value * @param root * @param value */ private void insertNode(TreeNode root, int value){ if(value > root.val){ //比根节点大,在右子树插入 if(root.right == null){ root.right = new TreeNode(value); }else{ root = root.right; insertNode(root, value); } } else{ if(root.left == null){ root.left = new TreeNode(value); }else{ root = root.left; insertNode(root, value); //比根节点小的插入左子树 } } } /** * 先序遍历 * @param root */ public void preTravel(TreeNode root){ if(root != null){ // System.out.print(root.val + " "); preTravel(root.left); preTravel(root.right); } } }
相关文章推荐
- LeetCode: Convert Sorted List to Binary Search Tree
- [LeetCode] Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- 【ATT】Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- [Leetcode]Convert Sorted List to Binary Search Tree
- leetcode 66: 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, Solution
- [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(List) to Binary Search Tree
- Leetcode: Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree