617. Merge Two Binary Trees

2021-02-15  本文已影响0人  jluemmmm

将两个二叉树合并为一个新的二叉树。合并的规则是,如果两个节点重叠,将值相加作为节点合并后的新值,否则不为null的节点将直接作为新二叉树的节点。

DFS

var mergeTrees = function(root1, root2) {
    if(root1 === null) return root2
    if(root2 === null) return root1
    let merged = new TreeNode(root1.val + root2.val)
    merged.left = mergeTrees(root1.left, root2.left)
    merged.right = mergeTrees(root1.right, root2.right)
    return merged
};

BFS

广度优先遍历,将值附加到root1上。

var mergeTrees = function(root1, root2) {
    if(root1 === null || root2 === null) return root1 || root2
    let queue = [[root1, root2]]
    while(queue.length) {
        let [n1, n2] = queue.shift()
        let { left: l1, right: r1 } = n1
        let { left: l2, right: r2 } = n2
        
        if(n1 && n2) n1.val += n2.val
        if(l1 && l2) queue.push([l1, l2])
        if(r1 && r2) queue.push([r1, r2])
        
        if(!l1 && l2) n1.left = n2.left
        if(!r1 && r2) n1.right = n2.right
    }
    return root1
};
上一篇 下一篇

猜你喜欢

热点阅读