一、題目大意
給你一棵二叉樹的根節點 root ,翻轉這棵二叉樹,并回傳其根節點,
示例 1:

輸入:root = [4,2,7,1,3,6,9]
輸出:[4,7,2,9,6,3,1]
示例 2:

輸入:root = [2,1,3]
輸出:[2,3,1]
示例 3:
輸入:root = []
輸出:[]
提示:
-
樹中節點數目范圍在 [0, 100] 內
-
-100 <= Node.val <= 100
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/invert-binary-tree
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
二、解題思路
翻轉二叉樹是樹的基本操作之一,可以使用遞回和非遞回兩種方法,遞回方法:交換當前左右節點,并直接呼叫遞回即可,非遞回方法:跟二叉樹的層序遍歷一樣,需要用queue畫輔助,先把根節點排入佇列中,然后從佇列中取出來,交換其左右節點,如果存在則分別將左右節點再排入佇列中,以此類推直到佇列中沒有節點了
三、解題方法
3.1 Java實作-遞回
public class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return root;
}
TreeNode tmp = root.left;
root.left = invertTree(root.right);
root.right = invertTree(tmp);
return root;
}
}
3.2 Java實作-非遞回
public class Solution2 {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return root;
}
Deque<TreeNode> q = new ArrayDeque<>();
q.push(root);
while (!q.isEmpty()) {
TreeNode node = q.pop();
TreeNode tmp = node.left;
node.left = node.right;
node.right = tmp;
if (node.left != null) {
q.push(node.left);
}
if (node.right != null) {
q.push(node.right);
}
}
return root;
}
}
四、總結小記
- 2022/9/29 在你成為領導者之前,成功的全部就是自我的成長;當你成了領導者,成功的全部就變成幫助他人成長,---通用電氣CEO 杰克 · 韋爾奇《商業的本質》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510713.html
標籤:其他
