【剑指offer】面试题19:二叉树的镜像

二叉树定义:

struct BinaryTreeNode { int m_nValue; BinaryTreeNode*m_pLeft; BinaryTreeNode*m_PRight; };

思路:输出镜像,其实也就是我们在遍历的时候改变它的左右孩子。

void MirrorRecursively(BinaryTreeNode*pHead)//镜像的根节点一致,所以不用传二级指针 { if (pHead == NULL) { return ; } if (pHead->m_pLeft == NULL&&pHead->m_pRight == NULL) { return ; } //递归遍历->交换左右子树 //交换左右子树 BinaryTreeNode* pTemp = pHead->m_pLeft; pHead->m_pLeft = pHead->m_pRight; pHead->m_pRight = pTemp; if (pHead->m_pLeft) { MirrorRecursively(pHead->m_pLeft); } if (pHead->m_pRight) { MirrorRecursively(pHead->m_pLeft); } }