题目:请实现一个函数,用来判断一个二叉树是不是对称的。
思路:前序遍历算法的对称算法(先左子树后右子树–先右子树后左子树),若两个遍历算法得出的一致,则为对称二叉树。
bool isSymmetrical(BinaryTreeNode* pNode) {
return isSymmetricalfuntion(pNode, pNode);
}
bool isSymmetricalfuntion(BinaryTreeNode* pNode1, BinaryTreeNode* pNode2) {
if (NULL == pNode1 && NULL == pNode2) {
return true;
}
if (NULL == pNode1 || NULL == pNode2) {
return false;
}
if (pNode1->m_nValue != pNode2->m_nValue) {
return false;
}
return isSymmetricalfuntion(pNode1->m_pLeft, pNode2->m_pRight) &&
isSymmetricalfuntion(pNode1->m_pRight, pNode2->m_pLeft);
}