ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

剑指offer JZ26 树的子结构

2022-01-25 15:00:28  阅读:102  来源: 互联网

标签:index right TreeNode offer JZ26 子结构 return left


题目

在这里插入图片描述

思路

这道题目的关键在于使用双迭代结构
在当前节点进行判断,是否符合子结构
若符合:返回true
若不符合:对当前节点的左右子树分别再次进行判断,若存在符合,返回true,否则继续迭代

双迭代:1、判断是否符合子结构
2、遍历整个A树

对于判断是否是子结构:
if 当前根节点不等,直接返回false
else 当前根节点相等,判断左右子树
返回:left and right

代码

/*
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) {
        if(!pRoot2||!pRoot1)//任何一个为空,则为false
            return false;
        else//当前均不空
        {
            if(son(pRoot1,pRoot2))//当前根节点即为子结构
                return true;
            if(HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2))//迭代左右子树
                return true;
            else
                return false;
        }
        
        
    }
    //判断当前节点有没有子结构
    bool son(TreeNode * root,TreeNode*index)
    {
        bool left=true,right=true;
        if(!root||root->val!=index->val)//当前节点不等
            return false;
        //对左右分别迭代
        if(index->left)
            left=son(root->left,index->left);
        if(index->right)
            right=son(root->right,index->right);
        return left and right;
        
    }
};

标签:index,right,TreeNode,offer,JZ26,子结构,return,left
来源: https://blog.csdn.net/qq_51052824/article/details/122684885

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有