递归之100.相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。

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

示例 1:

输入:       1         1
          / \       / \
         2   3     2   3

        [1,2,3],   [1,2,3]

输出: true
示例 2:

输入:      1          1
          /           \
         2             2

        [1,2],     [1,null,2]

输出: false


水一道题,思路特别简单,就是逐个结点比较数值是否相等,若有空指针那么都空才返回真。
渐渐对递归有了新认识,这里就是我假设‘前面’的节点都是经过验证了,只剩下最后根节点,那么只需要它的左右为真,且两个根节点数值相等即可!

class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if (p==nullptr || q==nullptr)
            return (p==q)?true:false;

        bool l=isSameTree(p->left,q->left);
        bool r=isSameTree(p->right,q->right);
        bool v=(p->val==q->val);
        return l&r&v;
    }
};

继续看导论知识。。

posted @ 2020-04-08 22:28  katachi  阅读(146)  评论(0编辑  收藏  举报