?劍指 Offer 27. 二叉樹(shù)的鏡像
難度:簡(jiǎn)單
請(qǐng)完成一個(gè)函數(shù),輸入一個(gè)二叉樹(shù),該函數(shù)輸出它的鏡像。
例如輸入:
4
/ \
2 7
/ \ / \
1 3 6 9
鏡像輸出:
4
/ \
7 2
/ \ / \
9 6 3 1
示例 1:
輸入:root = [4,2,7,1,3,6,9]
輸出:[4,7,2,9,6,3,1]
限制:
0 <= 節(jié)點(diǎn)個(gè)數(shù) <= 1000
注意:本題與 226. 翻轉(zhuǎn)二叉樹(shù) 相同。
??思路:遞歸
我們從根節(jié)點(diǎn)開(kāi)始,遞歸地對(duì)樹(shù)進(jìn)行遍歷:
- 如果當(dāng)前遍歷到的節(jié)點(diǎn)
root
為null
,則直接返回null
; - 如果當(dāng)前遍歷到的節(jié)點(diǎn)
root
不為null
,那么我們只需要 交換兩棵子樹(shù)的位置,且分別遞歸調(diào)用mirrorTree
函數(shù),返回根節(jié)點(diǎn)root
。
??代碼:(C++、Java)
C++
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* mirrorTree(TreeNode* root) {
if(root == nullptr) return nullptr;
TreeNode* temp = mirrorTree(root->left);
root->left = mirrorTree(root->right);
root->right = temp;
return root;
}
};
Java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root == null) return null;
TreeNode temp = mirrorTree(root.left);
root.left = mirrorTree(root.right);
root.right = temp;
return root;
}
}
?? 運(yùn)行結(jié)果:
?? 復(fù)雜度分析:
-
時(shí)間復(fù)雜度:
O
(
n
)
O(n)
O(n),其中
n
二叉樹(shù)節(jié)點(diǎn)的數(shù)目。我們會(huì)遍歷二叉樹(shù)中的每一個(gè)節(jié)點(diǎn),對(duì)每個(gè)節(jié)點(diǎn)而言,我們?cè)诔?shù)時(shí)間內(nèi)交換其兩棵子樹(shù)。。 - 空間復(fù)雜度: O ( n ) O(n) O(n),使用的空間由遞歸棧的深度決定,它等于當(dāng)前節(jié)點(diǎn)在二叉樹(shù)中的高度。在平均情況下,二叉樹(shù)的高度與節(jié)點(diǎn)個(gè)數(shù)為對(duì)數(shù)關(guān)系,即 O ( l o g ? n ) O(log? n) O(log?n)。而在最壞情況下,樹(shù)形成鏈狀,空間復(fù)雜度為 O ( n ) O(n) O(n)。
題目來(lái)源:力扣。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-638446.html
放棄一件事很容易,每天能堅(jiān)持一件事一定很酷,一起每日一題吧!
關(guān)注我LeetCode主頁(yè) / CSDN—力扣專欄,每日更新!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-638446.html
注: 如有不足,歡迎指正!
到了這里,關(guān)于(樹(shù)) 劍指 Offer 27. 二叉樹(shù)的鏡像 ——【Leetcode每日一題】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!