当前位置: 代码迷 >> 综合 >> 剑指offer-树的子结构
  详细解决方案

剑指offer-树的子结构

热度:78   发布时间:2024-01-26 03:56:34.0

问题描述:

输入两棵二叉树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 && pRoot2){if(pRoot1->val == pRoot2->val)result = IsSame(pRoot1, pRoot2);if(!result)result = HasSubtree(pRoot1->left, pRoot2);if(!result)result = HasSubtree(pRoot1->right, pRoot2);}return result;}bool IsSame(TreeNode* big, TreeNode* com){if(!com)    return true;if(!big)    return false;if(big->val == com->val)return IsSame(big->left, com->left) && IsSame(big->right, com->right);elsereturn false;}
};

 

  相关解决方案