其他分享
首页 > 其他分享> > 树的子结构

树的子结构

作者:互联网

树的子结构  算法知识视频讲解 较难  通过率:24.66%  时间限制:1秒  空间限制:64M   知识点二叉树

描述

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

示例1

输入:
{8,8,#,9,#,2,#,5},{8,9,#,2}
返回值:
true
   
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    
    bool dfs(TreeNode* node1,TreeNode* node2){
        if(node2 == NULL) return true;
        
        if(node1 == NULL) return false;
        
        if(node1->val == node2->val){
            return dfs(node1->left,node2->left) && dfs(node1->right,node2->right);
        }
        
        return false;
    }
    
    

    
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
        
        bool result = false;
        if(pRoot1 && pRoot2){
            
            
            if(pRoot1->val == pRoot2->val) {
                result = dfs(pRoot1,pRoot2);
            }
            
            if(!result) result = HasSubtree(pRoot1->left,pRoot2);
            
            if(!result) result = HasSubtree(pRoot1->right,pRoot2);
                
                
        }
        
        return result;
    }
};

java+注释

https://www.cnblogs.com/lishanlei/p/10707732.html

标签:right,TreeNode,val,pRoot2,子结构,pRoot1,result
来源: https://www.cnblogs.com/cunyusup/p/14910891.html