Invert a binary tree.
4 / \ 2 7 / \ / \ 1 3 6 9
to
4 / \ 7 2 / \ / \ 9 6 3 1
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 fuck off.
代码如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode invertTree(TreeNode root) { if (root == null || (root.left == null) && (root.right == null)) return root; root=invertTreeLR(root,root.left, root.right); return root; } public TreeNode invertTreeLR(TreeNode root,TreeNode left, TreeNode right) { //left,right位临时引用 if (left == null && right != null) { left = right; right = null; left=invertTreeLR(left,left.left, left.right); } else if (left != null && right == null) { right = left; left = null; right=invertTreeLR(right,right.left, right.right); } else if (left == null && right == null){ } else { TreeNode tmp = null; tmp = left; left = right; right = tmp; left=invertTreeLR(left,left.left, left.right); right=invertTreeLR(right,right.left, right.right); } root.left=left; root.right=right; return root; } }运行结果: