首页 > 代码库 > 树的子结构

树的子结构

引用剑指offer

 1 //判断以root1为根的树是否和树2有相同的结构(如果为真,必须从root1节点就相同) 2 bool doesRoot1HaveAllNodesOfRoot2(treeNode* root1,treeNode* root2){ 3     if(root2==NULL) 4         return true; 5     if(root1==NULL) 6         return false; 7     if(root1->data!=root2->data) 8         return false; 9     return doesRoot1HaveAllNodesOfRoot2(root1->lChild,root2->lChild)&&10         doesRoot1HaveAllNodesOfRoot2(root1->rChild,root2->rChild);11 }12 //判断是否为子结构13 bool isSubStructure(treeNode* root1,treeNode* root2){14     if(root2==NULL)15         return true;16     if(root1==NULL)17         return false;18     bool found=doesRoot1HaveAllNodesOfRoot2(root1,root2);19     if(!found && root1->lChild!=NULL)20         found=doesRoot1HaveAllNodesOfRoot2(root1->lChild,root2);21     if(!found && root1->rChild!=NULL)22         found=doesRoot1HaveAllNodesOfRoot2(root1->rChild,root2);23     return found;24 }

 

树的子结构