26_SubstructureInTree(树中的子树)

题目描述

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

解题思路:首先寻找与B根节点相同的A的节点,然后判断A的子树的节点是否和B的子树的节点是否一样。

class Solution {
public:
	bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
	{
		bool result = false;
		if (pRoot1 != nullptr&&pRoot2 != nullptr)
		{
			if (pRoot1->val == pRoot2->val)
				result = Subtree(pRoot1, pRoot2);
			if(!result)
				result = HasSubtree(pRoot1->left, pRoot2);
			if (!result)
				result = HasSubtree(pRoot1->right, pRoot2);
		}


		return result;
	}

	bool Subtree(TreeNode* pRoot1, TreeNode* pRoot2)
	{
		if (pRoot2 == nullptr)
			return true;
		if (pRoot1 == nullptr)
			return false;
		if (pRoot1->val != pRoot2->val)
			return false;
		return  Subtree(pRoot1->left, pRoot2->left) && Subtree(pRoot1->right, pRoot2->right);
	}
};

猜你喜欢

转载自blog.csdn.net/alatebloomer/article/details/80656857
今日推荐