【剑指offer】 平衡二叉树
题目
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树*每个节点 * 的左右两个子树的高度差的绝对值不超过 1 。
我的答案
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isBalanced = function (root) {
const res = getDepth(root);
if (res !== false) {
return true;
} else {
return false;
}
};
var getDepth = function (root) {
if (!root) {
return 0;
}
if (!root.left && !root.right) {
return 1;
}
const leftDepth = getDepth(root.left);
const rightDepth = getDepth(root.right);
if (leftDepth === false || rightDepth === false) {
return false;
} else if ((leftDepth - rightDepth) > 1 || (leftDepth - rightDepth) < -1) {
return false;
} else {
return Math.max(leftDepth, rightDepth) + 1;
}
}
这道题就是一个递归的做法。但是这个递归函数的返回结果有两种,一种false代表子树已经不满足条件可以直接返回false,还有一种结果是返回该节点为根的平衡树的高度。
标题:【剑指offer】 平衡二叉树
作者:limanting
地址:https://blog.manxiaozhi.com/articles/2021/09/25/1632556598129.html