Convert Sorted Array to Binary Search Tree
Convert Sorted Array to Binary Search Tree
问题:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:
递归,dfs
我的代码:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode sortedArrayToBST(int[] num) { if(num == null || num.length == 0 ) return null ; int len = num.length ; TreeNode rst = arrayToBST(num, 0, len - 1); return rst; } public TreeNode arrayToBST(int [] num, int left, int right) { if(left > right) return null; if(left == right) return new TreeNode(num[left]); int mid = (left + right)/2; TreeNode root = new TreeNode(num[mid]); root.left = arrayToBST(num, left, mid - 1); root.right = arrayToBST(num, mid + 1 , right); return root; } }
他人代码:
public TreeNode sortedArrayToBST(int[] num) { if (num.length == 0) { return null; } TreeNode head = helper(num, 0, num.length - 1); return head; } public TreeNode helper(int[] num, int low, int high) { if (low > high) { // Done return null; } int mid = (low + high) / 2; TreeNode node = new TreeNode(num[mid]); node.left = helper(num, low, mid - 1); node.right = helper(num, mid + 1, high); return node; }
学习之处:
- 我的代码有冗余的地方 left == right的判断可以省去
posted on 2015-03-06 16:45 zhouzhou0615 阅读(134) 评论(0) 编辑 收藏 举报