你可以修改代码,为每个节点添加一个名为 deep
的属性,其值等于其子节点的最大深度。以下是修改后的代码:
class TreeNode {
constructor(value) {
this.value = value;
this.children = [];
this.deep = 0; // 新添加的 deep 属性
}
}
function calculateMaxDepth(node) {
if (!node || !node.children || node.children.length === 0) {
node.deep = 0;
return 0;
}
let maxChildDepth = 0;
for (const child of node.children) {
const childDepth = calculateMaxDepth(child);
maxChildDepth = Math.max(maxChildDepth, childDepth);
}
node.deep = 1 + maxChildDepth;
return node.deep;
}
// 示例用法
const rootNode = new TreeNode(1);
const childNode1 = new TreeNode(2);
const childNode2 = new TreeNode(3);
const grandchildNode = new TreeNode(4);
rootNode.children.push(childNode1, childNode2);
childNode1.children.push(grandchildNode);
calculateMaxDepth(rootNode);
// 输出每个节点的 deep 属性
console.log('根节点 deep:', rootNode.deep);
console.log('子节点1 deep:', childNode1.deep);
console.log('子节点2 deep:', childNode2.deep);
console.log('孙子节点 deep:', grandchildNode.deep);
在这个例子中,我为每个节点添加了 deep
属性,并在 calculateMaxDepth
函数中计算和赋值。最后,你可以通过访问每个节点的 deep
属性来获取相应节点的深度。