本文主要是介绍剑指Offer18树的子结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
输入两颗二叉树A和B,判断B是不是A的子结构。
分析:
这个题没有难度,就是通过递归来一步步判断。
下面是代码:
bool DoesTree1HaveTree2(BinaryTreeNode *pRoot1,BinaryTreeNode *pRoot2)
{if(pRoot2 == NULL)return true;if(pRoot1 == NULL)return false;if(pRoot1->m_nValue != pRoot2->m_nValue)return false;return DoesTree1HaveTree2(pRoot1->m_pLeft,pRoot2->m_pLeft) &&DoesTree1HaveTree2(pRoot1->m_pRight,pRoot2->m_pRight);
}
bool HasSubTree(BinaryTreeNode *pRoot1,BinaryTreeNode *pRoot2)
{bool result = false;if(pRoot1 != NULL && pRoot2 != NULL){if(pRoot1->m_nValue == pRoot2->m_nValue)result = DoesTree1HaveTree2(pRoot1,pRoot2);if(!result)result = HasSubTree(pRoot1->m_pLeft,pRoot2);if(!result)result = HasSubTree(pRoot1->m_pRight,pRoot2);}return result;
}
这篇关于剑指Offer18树的子结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!