[路飞]_力扣算法题_100. 相同的树

111 阅读1分钟
难度 简单\color{#2db55d}{简单}

题目内容 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

题解

我们想象把一个node,node.left,node.right 的 三点作为一个二叉树单元。然后封装一个函数,来比对它:
    function compareUnit(p, q) {
        // 当两个节点都为空时它们自然是相等的
        if(!p && !q) return true;
        // 当它们不都为空时,只要有一个为空,那么它们就是不相等的
        if(!p || !q) return false;
        // 接下来比对它们的val
        if(p.val === q.val) {
            // 如果它们的值相等那么递归比较它们的left和right
            if(compareUnit(p.left, q.left)) {
                return compareUnit(p.right, q.right)
            }
            // left,right其中一个比对失败就返回false
                return false;
            } else {
                // 不相等直接返回false
                return false
            }
    }

完成这个单元比对函数,我们直接调用它即可。

/**
 * @param {TreeNode} p
 * @param {TreeNode} q
 * @return {boolean}
 */
var isSameTree = function(p, q) {
    return compareUnit(p, q)
};