108.将有序数组转换为二叉搜索树
思路
既然是递增的有序数组,那么只需从中间开始向两边遍历建树即可。考虑到平衡二叉树,那么需每次确定中心节点,中心节点两边为左右子树。采用递归调用可以解决。
写了代码一直报错,查看题解发现代码长得差不多,不知道哪里出了问题。可能是数组边界没处理好。
代码
public TreeNode trimBST(TreeNode root, int low, int high) {
if(root==null) return root;
if (root.val<low)
{
if (root.right!=null) return trimBST(root.right,low,high);
}
else if(root.val>high) {
if (root.left!=null) return trimBST(root.left,low,high);
}
root.left=trimBST(root.left,low,high);
root.right=trimBST(root.right,low,high);
return root;
}