18、二叉树的镜像 可以再过一遍
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \
1、借助队列来做,跟上面一题中的迭代版本很像
void Mirror(TreeNode* pRoot) { if (pRoot == nullptr) return; queue<TreeNode*> q; q.push(pRoot); while (!q.empty()) { TreeNode* node = q.front(); q.pop(); if (node) { q.push(node->left); q.push(node->right); swap(node->left, node->right); } } }
2、不使用swap函数的迭代版本
void Mirror(TreeNode* pRoot) { if (pRoot == nullptr) return; queue<TreeNode*> q; q.push(pRoot); while (!q.empty()) { TreeNode* node = q.front(); q.pop(); if (node) { q.push(node->left); q.push(node->right); //swap(node->left, node->right); TreeNode* temp = node->left; node->left = node->right; node->right = temp;