劍指offer——二叉樹的映象C++
不難,遞迴和迭代兩個版本。遞迴注意遞迴邊界,在這裡順便也檢測了魯棒性。改變這個結點的左右孩子,無論是不是空結點。然後遞迴改變左右孩子。
迭代:bfs即可
/*
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) return;
//遞迴變換即可,來一個結點存左子結點,右給左,左給右。然後遞迴變化左右結點,如果操作到空結點就return
TreeNode* jilu = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = jilu;
Mirror(pRoot->left);
Mirror(pRoot->right);*/
//迭代版本,bfs操作當前結點時交換兩個子結點即可
if(!pRoot) return;
queue<TreeNode*> q;
q.push(pRoot);
while(!q.empty()){
TreeNode* topNode = q.front();
q.pop();
TreeNode* tmp = topNode->left;
topNode->left = topNode->right;
topNode->right = tmp;
if(topNode->left != NULL) q.push(topNode->left);
if(topNode->right != NULL) q.push(topNode->right);
}
}
};
相關文章
- 【劍指offer】27. 二叉樹的映象二叉樹
- 劍指offer——二叉樹的深度C++二叉樹C++
- 【劍指offer】5.二叉樹的映象和列印二叉樹
- 力扣 - 劍指 Offer 27. 二叉樹的映象力扣二叉樹
- 劍指offer——重建二叉樹二叉樹
- 【劍指offer】二叉樹深度二叉樹
- 劍指offer(C++)——把二叉樹列印成多行C++二叉樹
- 劍指offer(四)重建二叉樹二叉樹
- 劍指offer--把二叉樹列印成多行(C++)二叉樹C++
- 劍指offer——從上往下列印二叉樹C++二叉樹C++
- 劍指Offer-40-二叉樹的深度二叉樹
- 《劍指offer》:[59]對稱的二叉樹二叉樹
- 《劍指offer》:[39]求解二叉樹的深度二叉樹
- 劍指 Offer 07. 重建二叉樹二叉樹
- 【劍指offer】判斷二叉樹平衡二叉樹
- 劍指offer | 55 - I. 二叉樹的深度二叉樹
- [劍指offer] 把二叉樹列印成多行二叉樹
- 《劍指offer》:[62]序列化二叉樹二叉樹
- 《劍指offer》:[60]把二叉樹列印成多行二叉樹
- 【劍指offer】從上向下列印二叉樹二叉樹
- # 劍指 Offer 68 - II. 二叉樹的最近公共祖先二叉樹
- 《劍指offer》:[58]二叉樹的下一個結點二叉樹
- 【劍指offer】樹的子結構
- 【劍指offer】二叉樹中和為某一值的路徑二叉樹
- 《劍指offer》之在完全二叉樹中新增子節點二叉樹
- 《劍指offer》:[61]按之字形順序列印二叉樹二叉樹
- 劍指 Offer 32 - III. 從上到下列印二叉樹 III二叉樹
- 《劍指offer》:[39-1]判斷是否為平衡二叉樹二叉樹
- 劍指 Offer 34. 二叉樹中和為某一值的路徑二叉樹
- 劍指offer-17:樹的子結構
- 劍指offer面試18 樹的子結構面試
- 劍指offer(java實現)第4題“重建二叉樹”-牛客網Java二叉樹
- 劍指 Offer 32 - I. 從上到下列印二叉樹(java解題)二叉樹Java
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- LeetCode 劍指offer——從上到下列印二叉樹 II、從上到下列印二叉樹 IIILeetCode二叉樹
- (python版)《劍指Offer》JZ57:二叉樹的下一個結點Python二叉樹
- leetcode 102 劍指Offer 32 二叉樹的層次遍歷LeetCode二叉樹
- 劍指offer 面試題 7 :二叉樹的下一個節點是什麼?面試題二叉樹