[LeetCode]Convert Sorted List to Binary Search Tree
2014-07-10 14:54
316 查看
题目描述
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; }
相关文章推荐
- [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
- 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
- leetcode 66: Convert Sorted List to Binary Search Tree
- LeetCode_Convert Sorted List to Binary Search Tree
- [LeetCode 109] - 将已排序链表转换为二叉搜索树 (Convert Sorted List to Binary Search Tree)
- [LeetCode] Convert Sorted List to Binary Search Tree