110. Balanced Binary Tree
Given a binary tree, determine if it is height - balanced.
For this problem, a height - balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
题意:
给定一棵二叉树,确定它是否是高度平衡树。
一个高度非平衡二叉树定义为一个二叉树的深度的两个子树节点不会相差超过1。
思路:
主要思想就是递归求树高,然后遍历所有树节点求树高,根据返回的左右子树的高度去判断子树高度相差是否大于1,大于1则不是高度平衡树。有两种方式判读,第一种是每遍历一个节点都求一回树高,在循环遍历里面比较左右子树高度,直到叶子节点,这种时间复杂度相对高些;第二种在递归求树高的递归函数中进行比较左右子树高度,一旦出现高度差大于1,直接返回,减少递归和遍历次数,时间复杂度低。
方法一:
上述第一种思路:
1 | class Solution { |
方法二:
上述第二种思路:
1 | //不在isBalanced()函数里面递归的判断是否平衡,在递归求树的高度的时候就进行判断 |