算法挑战43: 相同的树

4 阅读1分钟

题目

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的

思路

同时遍历两棵树

按照相同的顺序

前序遍历实质

如果当前节点都一样的话,就继续递左右子树

代码

var isSameTree = function(p, q) {
    function dfs(p,q){
        //base case
        if(p === null && q === null)return true;
        // p是空 或者 q是空 或者 两者都空,但是两者都空在上一个判断时就return了
        if(p === null || q === null)return false;
        if(p.val !== q.val) return false;
        //值相等的话,还要看子树是否相等
        let left = dfs(p.left,q.left);
        let right = dfs(p.right,q.right);
        //返回
        return (left && right);

    }
    return dfs(p,q);

};