剑指offer十八:树的子结构

 剑指offer十八:树的子结构

 剑指offer十八:树的子结构

 剑指offer十八:树的子结构

#include<iostream>
using namespace std;

typedef struct treenode
{
	int data;
	treenode* left;
	treenode* right;
}node, *pnode;

bool doesTreeHaveTree(pnode root1, pnode root2)
{
	if (root2 == NULL)
		return true;
	if (root1 == NULL)
		return false;
	
	if (root1->data != root2->data)
		return false;

	return doesTreeHaveTree(root1->left, root2->left) && doesTreeHaveTree(root1->right, root2->right);
}

bool hasTree(pnode root1, pnode root2)
{
	bool result = false;
	if (root1 != NULL && root2 != NULL)
	{
		if (root1->data == root2->data)
			result = doesTreeHaveTree(root1, root2);
		if (!result)
			result = hasTree(root1->left, root2);
		if (!result)
			result = hasTree(root1->right, root2);
	}
	return result;
}

 

相关文章: