在 JavaScript 中,可以使用广度优先搜索(BFS)来实现树的深拷贝。下面是一个实现的示例:

class TreeNode {
    constructor(value) {
        this.value = value;
        this.children = [];
    }
    
    addChild(child) {
        this.children.push(child);
    }
}
function deepCopyTree(root) {
    if (!root) {
        return null; // 如果根节点为空,返回 null
    }
    // 创建一个队列用于广度优先遍历
    const queue = [];
    const clonedRoot = new TreeNode(root.value); // 复制根节点
    queue.push({ original: root, clone: clonedRoot }); // 将原始节点和克隆节点放入队列
    while (queue.length > 0) {
        const { original, clone } = queue.shift(); // 弹出队列中的第一个元素
        // 遍历当前节点的子节点
        for (const child of original.children) {
            const clonedChild = new TreeNode(child.value); // 复制子节点
            clone.children.push(clonedChild); // 将复制的子节点添加到克隆节点的子节点中
            queue.push({ original: child, clone: clonedChild }); // 将子节点的原始和克隆放入队列
        }
    }
    return clonedRoot; // 返回深拷贝的树的根节点
}
// 示例用法
const root = new TreeNode(1);
const child1 = new TreeNode(2);
const child2 = new TreeNode(3);
const child3 = new TreeNode(4);
root.addChild(child1);
root.addChild(child2);
child1.addChild(child3);
const clonedTree = deepCopyTree(root);
// 打印结果以验证深拷贝
console.log(clonedTree); // 输出克隆的树结构