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);
}