package LeetCode_226 import java.util.* /** * 226. Invert Binary Tree * https://leetcode.com/problems/invert-binary-tree/description/ * * Invert a binary tree. * * Trivia: This problem was inspired by this original tweet by Max Howell: Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so f*** off. * */ class TreeNode(var `val`: Int) { var left: TreeNode? = null var right: TreeNode? = null } class Solution { fun invertTree(root: TreeNode?): TreeNode? { //method 1: bfs if (root==null){ return root } val queue = LinkedList<TreeNode>() queue.offer(root) while (queue.isNotEmpty()){ //invert level by level val cur = queue.pop() if (cur!=null){ val temp = cur.left cur.left = cur.right cur.right = temp } if (cur.left!=null){ queue.offer(cur.left) } if (cur.right!=null){ queue.offer(cur.right) } } return root } }