树的子结构

剑指offer-牛客网

Posted by Y. on December 2, 2018

树的子结构

题目描述

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

时间限制:1秒 空间限制:32768K

代码

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function HasSubtree(pRoot1, pRoot2)
{
    // write code here
    function doPRoot2BelongToPRoot1(node1, node2) {
        if(node1 != null && node2 != null) {
            if(node1.val == node2.val) {
                return doPRoot2BelongToPRoot1(node1.left, node2.left) && doPRoot2BelongToPRoot1(node1.right, node2.right);
            } else {
                return false;
            }
        } else if(node2 == null){
            return true;
        } else {
            return false;
        }
    }
    var result = false;
    if(pRoot1 != null && pRoot2 != null) {
        result = doPRoot2BelongToPRoot1(pRoot1, pRoot2);
        if(!result) result = HasSubtree(pRoot1.left, pRoot2);
        if(!result) result = HasSubtree(pRoot1.right, pRoot2);
    }
    return result;
}