[LeetCode] Invert Binary Tree 翻转二叉树

た 入场券 2022-04-13 21:14 322阅读 0赞

Invert a binary tree.

  1. 4
  2. / \
  3. 2 7
  4. / \ / \
  5. 1 3 6 9

to

  1. 4
  2. / \
  3. 7 2
  4. / \ / \
  5. 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.

这道题让我们翻转二叉树,是树的基本操作之一,不算难题。最下面那句话实在有些木有节操啊,不知道是Google说给谁的。反正这道题确实难度不大,可以用递归和非递归两种方法来解。先来看递归的方法,写法非常简洁,五行代码搞定,交换当前左右节点,并直接调用递归即可,代码如下:

  1. public class liubobo_7_2 {
  2. /// 226. Invert Binary Tree
  3. /// https://leetcode.com/problems/invert-binary-tree/description/
  4. /// 时间复杂度: O(n), n为树中节点个数
  5. /// 空间复杂度: O(h), h为树的高度
  6. // Definition for a binary tree node.
  7. public class TreeNode {
  8. int val;
  9. TreeNode left;
  10. TreeNode right;
  11. TreeNode(int x) { val = x; }
  12. }
  13. public TreeNode invertTree(TreeNode root) {
  14. if(root == null)
  15. return null;
  16. TreeNode left = invertTree(root.left);
  17. TreeNode right = invertTree(root.right);
  18. root.left = right;
  19. root.right = left;
  20. return root;
  21. }
  22. }

发表评论

表情:
评论列表 (有 0 条评论,322人围观)

还没有评论,来说两句吧...

相关阅读