class Node {
constructor(value, left, right) {
this.value = value;
this.left = left;
this.right = right;
}
}
let n2 = new Node(2, null, null);
let n2_2 = new Node(2, null, null);
let n1 = new Node(1, null, n2);
let n1_2 = new Node(1, n2_2, null);
let n4 = new Node(4, null, null);
let n4_2 = new Node(4, null, null);
let n3 = new Node(3, n4, n1);
let n3_2 = new Node(3, n1_2, n4_2);
let root = new Node(5, n3, n3_2);
function fn(root) {
function 对比(node) {
if (node === null) return 0
let 左子树高度 = 对比(node.left)
if (左子树高度 === -1) return -1
let 右子树高度 = 对比(node.right)
if (右子树高度 === -1) return -1
if (Math.abs(左子树高度 - 右子树高度) > 1) {
return -1
} else {
return 1 + Math.max(左子树高度, 右子树高度)
}
}
return 对比(root) !== -1 ? '是平衡二叉树' : '不是平衡二叉树'
}
console.log('是否为平衡二叉树? 答:' + fn(root))
console