- 題目
操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 二叉樹的鏡像定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11 鏡像二叉樹 8 / \ 10 6 / \ / \ 11 9 7 5
- 對二叉樹進行遍歷,並交換左右孩子結點
遞歸/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: void Mirror(TreeNode *pRoot) { if(pRoot != NULL) { TreeNode *temp; temp = pRoot->left; pRoot->left = pRoot->right; pRoot->right = temp; Mirror(pRoot->left); Mirror(pRoot->right); } } };
- 非遞歸層次遍歷
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: void Mirror(TreeNode *pRoot) { if(pRoot != NULL) { std::queue<TreeNode*> q; q.push(pRoot); while(!q.empty()) { TreeNode *k = q.front(); TreeNode *temp = k->left; k->left = k->right; k->right = temp; if(k->left!=NULL) q.push(k->left); if(k->right!=NULL) q.push(k->right); q.pop(); } } } };