递归分治思想判断平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
其中一个很重要的定义为:每个节点也要是一颗平衡二叉树
下面放代码
1 | class Solution { |
这是一种比较简洁的解决方案,通过deep
函数计算左右子树的最大深度,并通过递归调用isBalanced
判断子树是否也是平衡二叉树,若有一个子树不为平衡二叉树,那整个二叉树必然不为平衡二叉树。但算法的性能和效率有待改进,leetcode执行用时60ms,内存消耗14.8MB
其中,计算二叉树高度的代码需要加深理解,老是容易忘记比较简洁的写法。
1 | func deep(_ root:TreeNode?) -> Int{ |
Tino Wu