题解 | #树的子结构#

树的子结构

http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88

/*
struct TreeNode {
int val;
struct TreeNode left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
/
class Solution {
public:
int depth(TreeNode *node)
{
if(node==NULL) return 0;
return 1+max(depth(node->left),depth(node->right));
}
int isSame(TreeNode *pRoot1,TreeNode *pRoot2)
{
if(pRoot2==NULL) return 1;
if(pRoot1==NULL && pRoot2!=NULL) return 0;
if(pRoot1->val!=pRoot2->val) return 0;
return isSame(pRoot1->left, pRoot2->left) && isSame(pRoot1->right, pRoot2->right);
}
bool isHashSubtree(TreeNode *pRoot1,TreeNode *pRoot2)
{
int depleng=depth(pRoot2);
queue<TreeNode *> q;
q.push(pRoot1);
while(!q.empty())
{
int len=q.size();
for(int i=0;i<len;i++)
{
TreeNode *temp=q.front();
q.pop();
if(temp->val==pRoot2->val && depth(temp)>=depleng);
{
int a=isSame(temp, pRoot2);
if(a)
{
return true;
}

}
if(temp->left)
{
q.push(temp->left);
}
if(temp->right)
{
q.push(temp->right);
}

        }
    }
    return false;

}
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
    if(pRoot1==NULL || pRoot2 ==NULL) return false;
    return isHashSubtree(pRoot1, pRoot2);

}

};

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-12 10:05
小米集团 算法工程师 28.0k*15.0
泡沫灬一触即破:楼上那个看来是看人拿高薪,自己又不如意搁这泄愤呢是吧,看你过往评论很难不怀疑你的精神状态
点赞 评论 收藏
分享
菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务