树的子结构

来源:互联网 发布:淘宝小崔韩代 编辑:程序博客网 时间:2024/05/22 15:45

题目描述

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

/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public:    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)    {        bool result= false;            if(pRoot1!=NULL&&pRoot2!=NULL)                {                //如果1的根节点等于2的根节点,则比较其子树的结构                if(pRoot1->val==pRoot2->val)                    result=TestTree(pRoot1,pRoot2);                //若在1中没有找到2的子树,则分别比较1左右子节点的值。主要是!result                if(!result)                    result=HasSubtree(pRoot1->left,pRoot2);                if(!result)                    result=HasSubtree(pRoot1->right,pRoot2);            }          return result;    }    bool TestTree(TreeNode* pRoot1, TreeNode* pRoot2)        {        //若是树2节点为空,则说明树2是1的子结构        if(pRoot2==NULL)            return true;        //树1的为空,而2对应不为空,则说明1不包含2        if(pRoot1==NULL)            return false;        //在比较其左右子树的值时候,若是不相等        if(pRoot1->val!=pRoot2->val)            return false;        return TestTree(pRoot1->left,pRoot2->left)&&TestTree(pRoot1->right,pRoot2->right);    }};


0 0
原创粉丝点击