Leetcode題解 Python & C#:六月挑戰DAY1 Invert Binary Tree

反轉二元樹。

這題被啟發的述說蠻好笑的,會寫軟體,但不會在白板寫出反轉二元樹。
有時候會被簡單卡關是難免的。

要反轉二元樹,也就是左右對調,node.left, node.right = node.right, node.left,如此運作下去到底。

我也沒有一次到位,不過很快就察覺到該怎麼寫。


Python

class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
stack = [root]
while stack:
node = stack.pop()
if node:
node.left, node.right = node.right, node.left
stack.extend([node.left, node.right])
return root

C#

public class Solution {
public TreeNode InvertTree(TreeNode root) {
if(root is null){return root;}
var stack = new Stack();
stack.Push(root);
while(stack.Count > 0)
{
var node = stack.Pop();
var temNode = node.right;
node.right = node.left;
node.left = temNode;
if (!(node.right is null))
stack.Push(node.right);
if (!(node.left is null))
stack.Push(node.left);
}
return root;
}
}