【剑指offer系列】 树的子结构___18

来源:互联网 发布:免费网页游戏源码 编辑:程序博客网 时间:2024/06/06 05:45

  题目描述:
  输入两棵二叉树A和B,判断B是不是A的子结构
  
  示例:
  下图中A有一部分子树和B是相同的,因此B是A的子结构
  这里写图片描述   
  
  分析:
  基本思想是首先在A中找到和B根节点值相同的节点,然后以此作为根节点分别递归判断左右子树和B是否相同。
  
  代码:    

bool hasSubTree(treeNode *root1,treeNode *root2){    if(root2==NULL) return true;    if(root1==NULL) return false;    return (root1->val==root2->val) && hasSubTree(root1->left,root2->left) && hasSubTree(root1->right,root2->right);}bool isSubTree(treeNode *root1,treeNode *root2){    if(root2==NULL) return true;    if(root1==NULL) return false;    bool result=false;    if(root1->val==root2->val)    //找到B的根节点对应的节点        result=hasSubTree(root1,root2);   //然后进行判断    if(!result)        result=isSubTree(root1->left,root2);    if(!result)        result=isSubTree(root1->right,root2);    return result;}
0 0
原创粉丝点击