您的位置:首页 > 其它

判断一个二叉树是否是另一个的子树

2014-07-20 13:58 281 查看
输入两个二叉树A,B,设计一个程序检测B是否是A的子树。

#include <iostream>

using namespace std;

struct BiTreeNode{
int val;
BiTreeNode* leftChild;
BiTreeNode* rightChild;
};

bool subTreeCheck(BiTreeNode* Root1, BiTreeNode* Root2){
if (Root2 == NULL)
return true;
if (Root1 == NULL)
return false;
if (Root1->val != Root2->val)
return false;

return subTreeCheck(Root1->leftChild, Root2->leftChild)
&& (Root1->rightChild, Root2->rightChild);
}

bool hasSubTree(BiTreeNode* Root1, BiTreeNode* Root2){
if (Root1 == NULL || Root2 == NULL) return false;
bool result = false;
if (Root1->val == Root2->val){
result = subTreeCheck(Root1, Root2);
}
if (!result) result = hasSubTree(Root1->leftChild, Root2);
if (!result) result = hasSubTree(Root1->rightChild, Root2);
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: