树的子结构

来源:互联网 发布:红帽系统yum源 编辑:程序博客网 时间:2024/05/16 18:08

题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路:
先判断两个子树的根结点是不是相等,不等的话再判断B是不是包含在A的左子树中、不是的话是不是包含在A的右子树中,这题也是一个递归调用。

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class Solution {public:    bool isSubtree(TreeNode* pRoot1, TreeNode* pRoot2)    {        if(pRoot2==NULL)            return true;//B树是否遍历完了        if(pRoot1==NULL)            return false;//A树是否遍历完了        if(pRoot1->val==pRoot2->val)        {            return isSubtree(pRoot1->left,pRoot2->left)&&isSubtree(pRoot1->right,pRoot2->right);        }        else return false;    }    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)    {         if(pRoot2==NULL||pRoot1==NULL)            return false;        return isSubtree(pRoot1,pRoot2)||HasSubtree(pRoot1->left,pRoot2)            ||HasSubtree(pRoot1->right,pRoot2);    }};
原创粉丝点击