首页 > 代码库 > 树的子结构
树的子结构
输入2棵二叉树A和B,判断B是不是A的子结构。
1 struct BinaryTreeNode //节点 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 BinaryTreeNode* m_pRight; 6 };
1 bool DoseTree1HaveTree2(BinaryTreeNode* pRoot1 ,BinaryTreeNode* pRoot2) 2 { 3 4 if (pRoot2 == NULL) 5 { 6 return true ; 7 } 8 if (pRoot1 == NULL) 9 { 10 return false ; 11 } 12 if (pRoot1->m_nValue != pRoot2->m_nValue) 13 { 14 return false ; 15 } 16 17 return DoseTree1HaveTree2(pRoot1->m_pLeft , pRoot2->m_pLeft) && DoseTree1HaveTree2(pRoot1->m_pRight ,pRoot2->m_pRight) ; 18 } 19 bool HasSubtree(BinaryTreeNode* pRoot1 ,BinaryTreeNode* pRoot2) 20 { 21 bool result = false ; 22 if (pRoot1 && pRoot2) 23 { 24 if (pRoot1->m_nValue =http://www.mamicode.com/= pRoot2->m_nValue) 25 { 26 result = DoseTree1HaveTree2(pRoot1 , pRoot2); 27 } 28 if (!result) 29 { 30 result = HasSubtree(pRoot1->m_pLeft , pRoot2); 31 } 32 if (!result) 33 { 34 result = HasSubtree(pRoot1->m_pRight , pRoot2); 35 } 36 } 37 38 return result ; 39 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。