題目:操作給定的二叉樹,將其變換爲源二叉樹的鏡像。
二叉樹的鏡像定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11 鏡像二叉樹 8 / \ 10 6 / \ / \ 11 9 7 5
分析:從最底層開始交換一棵樹(樹的子樹)的左右子樹,因爲交換的是結點指針,因此當上層交換時會自動將下層已經交換過的結點帶過來。
//交換一棵樹的左右子樹(遞歸,即從最底層開始交換)
//由於交換的是結點,因此交換上層結點時,自動會將下層已經交換過的結點帶過來
void exchange(TreeNode* root)
{
if(root == NULL)
return;
exchange(root->left);
exchange(root->right);
TreeNode* tmp=root->left;
root->left=root->right;
root->right=tmp;
}
void Mirror(TreeNode *pRoot) {
if(pRoot==nullptr)
return;
exchange(pRoot);
}