面试题 04.04. 检查平衡性

题目

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。

示例1:

1
2
3
4
5
6
7
8
9
给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

0
/ \
-3 9
/ /
-10 5

解法

解法一:

递归建树

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public TreeNode sortedArrayToBST(int[] nums) {
return buildTree(nums, 0, nums.length - 1);
}

private TreeNode buildTree(int[] nums, int begin, int end) {
if (begin > end) {
return null;
}

if (begin == end) {
return new TreeNode(nums[begin]);
}

int mid = (begin + end) >> 1;
TreeNode node = new TreeNode(nums[mid]);
node.left = buildTree(nums, begin, mid - 1);
node.right = buildTree(nums, mid + 1, end);
return node;
}
0%