相同的树

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

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

示例 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

示例 3:

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

        [1,2,1],   [1,1,2]
输出: false


public bool IsSameTree(TreeNode p, TreeNode q) {

    //边界,递归到叶节点的子节点
    if(p == null && q == null) return true;
    //安全判断的同时也可以判断是否相同,保证p和q都不为空
    if(p == null || q == null) return false;

    bool left = IsSameTree(p.left,q.left);//递归对比每一个左子树
    bool right = IsSameTree(p.right,q.right);//递归对比每一个右子树

    //结合每一个左子树和右子树的对比结果,还有根节点的对比
    return left && right && (p.val == q.val);
}

//一次过,这是我没想到的,哈哈哈。

首页 我的博客
粤ICP备17103704号