其他分享
首页 > 其他分享> > 【剑指offer】树的子结构(JS实现)

【剑指offer】树的子结构(JS实现)

作者:互联网

题目描述:

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

思路:如果A,B根节点值相同,进一步判断其子树的值;
否则在A的左子树、右子树中寻找

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */ 
function HasSubtree(pRoot1, pRoot2)
{
   if (pRoot1 == null || pRoot2 == null) {
       return false;
   }
   //如果根节点相同,进一步比较其左子树右子树;
   //否则分别判断其左子树或右子树中是否包含
    return Subtree(pRoot1, pRoot2) || HasSubtree(pRoot1.left, pRoot2) || HasSubtree(pRoot1.right, pRoot2);
}

function Subtree(root1, root2) {
//如果第二棵遍历结束,则说明是是其子树
    if (root2 == null) return true;
    //如果第二棵没有结束,第一棵已经遍历完,则不是它的子树
    if (root1 == null) return false;
    //如果两个节点值相同,进一步判断其左子树右子树
    if (root1.val == root2.val) {
        return Subtree(root1.left, root2.left) &&
            Subtree(root1.right, root2.right);
    } else {
        return false;   
    }
}
进阶er 发布了95 篇原创文章 · 获赞 91 · 访问量 1万+ 私信 关注

标签:return,offer,pRoot2,子结构,JS,pRoot1,null,root1,root2
来源: https://blog.csdn.net/qq_43466457/article/details/104534210