树的子结构

  1. 树的子树和子结构的区别:1)子树的意思就是只要包含一个结点,就得包含这个结点下所有的结点
                          2)子结构的意思是包含了一个结点,可以只取梭子树或者又子树,或者不去
    /*
    struct TreeNode {
    	int val;
    	struct TreeNode *left;
    	struct TreeNode *right;
    	TreeNode(int x) :
    			val(x), left(NULL), right(NULL) {
    	}
    };*/
    class Solution {
        bool isSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
        {
          if(pRoot2==nullptr)
                return true;
          if(pRoot1==nullptr)
              return false;
            if(pRoot1->val==pRoot2->val)
            {
                return isSubtree(pRoot1->left,pRoot2->left)
                    &&isSubtree(pRoot1->right,pRoot2->right);
            }
            else 
                return false;
        }
            
    public:
        bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
        {
          if (pRoot1==nullptr||pRoot2==nullptr)
              return false;
            return isSubtree(pRoot1,pRoot2)||HasSubtree(pRoot1->left,pRoot2)
                ||HasSubtree(pRoot1->right,pRoot2);
        }
                
            
        
    };

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值