剑指offer

17-树的子结构-递归(有需要注意的地方)

2020-05-07  本文已影响0人  马甲要掉了

题目描述:

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

代码:

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function HasSubtree(pRoot1, pRoot2)
{
    // write code here
    var res = false;
    if(pRoot2==null || pRoot1 == null) return false;
    if(pRoot1.val == pRoot2.val){
       res = isSubtree(pRoot1,pRoot2);
    }
    if (!res) res = HasSubtree(pRoot1.left, pRoot2);
    if (!res) res = HasSubtree(pRoot1.right, pRoot2);
    return res;
}
function isSubtree(p1,p2){
    if(p2==null) return true;  //必须先判断p2有没有走完,不然会出错(可能p1也走完了,p2也走完了)
    if(p1==null) return false;
    
    if(p1.val!=p2.val) return false;
    return isSubtree(p1.left,p2.left) && isSubtree(p1.right,p2.right);
}
上一篇 下一篇

猜你喜欢

热点阅读