2020年6月1日 星期一

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;
    }
}