以下是使用JavaScript实现计算二叉树中满足条件的节点差值绝对值最大值的示例代码:
// 定义二叉树节点类
class TreeNode {
constructor(val) {
this.val = val;
this.left = null;
this.right = null;
}
}
// 计算二叉树节点差值绝对值最大值的函数
function maxDiff(root) {
let maxDiffVal = -Infinity; // 最大差值初始化为负无穷
// 递归函数,用于计算以当前节点为根节点的子树的最小和最大节点值,并更新maxDiffVal
function dfs(node, minVal, maxVal) {
if (!node) return;
// 更新maxDiffVal
maxDiffVal = Math.max(maxDiffVal, Math.abs(node.val - minVal), Math.abs(node.val - maxVal));
// 更新minVal和maxVal
minVal = Math.min(minVal, node.val);
maxVal = Math.max(maxVal, node.val);
dfs(node.left, minVal, maxVal); // 遍历左子树
dfs(node.right, minVal, maxVal); // 遍历右子树
}
dfs(root, root.val, root.val); // 调用递归函数开始计算
return maxDiffVal;
}
// 构建二叉树并测试
const root = new TreeNode(8);
root.left = new TreeNode(3);
root.right = new TreeNode(10);
root.left.left = new TreeNode(1);
root.left.right = new TreeNode(6);
root.right.right = new TreeNode(14);
root.left.right.left = new TreeNode(4);
root.left.right.right = new TreeNode(7);
root.right.right.left = new TreeNode(13);
console.log(maxDiff(root)); // 输出: 12 (1和13之间的差值)
以上代码中,我们使用递归的方式遍历二叉树,并在每个节点处更新最大差值。对于每个节点,我们将其值与当前子树的最小值和最大值进行比较,计算出当前节点与最小和最大值之间的差值,并更新maxDiffVal。然后,递归地遍历左右子树。
注意,在计算过程中,我们需要传递当前子树的最小值和最大值给递归函数来进行比较和更新。
希望这个示例能够帮助你解决问题。如果有任何疑问,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问




