树的子结构

来源:互联网 发布:thinking in java pdf 编辑:程序博客网 时间:2024/05/16 11:00

判断一棵树是否是另外一棵树的子树。

bool DoesTree1HasTree2(BTNode* pRoot1, BTNode* pRoot2){if (NULL == pRoot1)return false;if (NULL == pRoot2)return true;if (pRoot1->nData != pRoot2->nData)return false;// 注意这边是“&”,和下面HasSubTree最后的“||”的区别return DoesTree1HasTree2(pRoot1->pLeft, pRoot2->pLeft) && DoesTree1HasTree2(pRoot1->pLeft, pRoot2->pRight);}bool HasSubTree(BTNode* pRoot1, BTNode* pRoot2){if (NULL == pRoot1 && NULL == pRoot2) // 都为空return true;else if (NULL == pRoot1) // 只有pRoot1为空return false;else if (NULL == pRoot2) // 只有pRoot2为空return true;// 在pRoot1上找到pRoot2的根节点匹配的节点// 从这个节点开始依次比较if (pRoot1->nData == pRoot2->nData)return DoesTree1HasTree2(pRoot1, pRoot2);// 先在左子树,后右子树上查找。只要在其中一个找到即算找到return HasSubTree(pRoot1->pLeft, pRoot2) || HasSubTree(pRoot1->pRight, pRoot2);}

参考文献:

剑指offer

0 0
原创粉丝点击