二叉树的中序遍历就是一个不递减的有序数组,因此按照中序遍历的逆过程来建立二叉树就可以了。
public TreeNode sortedArrayToBST(int[] num) { int n = num.length; if(n == 0) return null; int mid = n / 2; int[] left = new int[mid]; int[] right = new int[n-1-mid]; for(int i = 0; i < mid; i++) left[i] = num[i]; for(int i = 0; i < n-1-mid; i++) right[i] = num[i+mid+1]; TreeNode root = new TreeNode(num[mid]); root.left = sortedArrayToBST(left); root.right = sortedArrayToBST(right); return root; }
没有评论:
发表评论