您的位置:首页 > 其它

程序7——一棵二叉树是不是另外一棵二叉树的子结构

2015-12-16 10:25 239 查看
树的子结构是指:在二叉树A中存在二叉树B,也是就是二叉树B是二叉树A的子结构。如下图所示:



基本思路:

首先在二叉树A中查找与二叉树B的根节点的值相同的节点,然后再一次判断该节点的左右孩子节点是不是跟二叉树B的左右孩子节点相同。

代码如下:

boolean hasSubTree(tree *A, tree *B) {
if (A == B) {
return true;
}
if (B == null) {
return true;
}
if (A == null) {
return false;
}

if (A->data != B->data) {
return false;
}
boolean result = match(A, B);
if (result) {
return true;
}
return hasSubTree(A->lchild, B) || hasSubTree(A->rchild, B);
}

boolean match(tree *A, tree *B) {
if (A == B) {
return true;
}

if (B == null) {
return true;
}
if (A == null) {
return false;
}
if (A->data != B->data) {
return false;
}
return match(A->lchild, B->lchild) && match(A->rchild, B->rchild);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: