Balanced Binary Tree
2016-06-13 02:12
483 查看
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.
Tags
Tree, DFS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Check height of the left and right tree difference.
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
function maxHeight(node) {
if (node === null) {
return 0;
}
if (node.left === null && node.right === null) {
return 1;
}
return Math.max(maxHeight(node.left), maxHeight(node.right)) + 1;
}
var isBalanced = function (root) {
if (root === null || (root.left === null && root.right === null)) {
return true;
}
return (Math.abs(maxHeight(root.left) - maxHeight(root.right)) <= 1) && isBalanced(root.left) && isBalanced(root.right);
};
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.
Tags
Tree, DFS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Check height of the left and right tree difference.
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
function maxHeight(node) {
if (node === null) {
return 0;
}
if (node.left === null && node.right === null) {
return 1;
}
return Math.max(maxHeight(node.left), maxHeight(node.right)) + 1;
}
var isBalanced = function (root) {
if (root === null || (root.left === null && root.right === null)) {
return true;
}
return (Math.abs(maxHeight(root.left) - maxHeight(root.right)) <= 1) && isBalanced(root.left) && isBalanced(root.right);
};
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享