来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree/

描述

翻转一棵二叉树。

输入:
4
/ \
2 7
/ \ / \
1 3 6 9

输出:
4
/ \
7 2
/ \ / \
9 6 3 1

题解

递归版

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public TreeNode invertTree(TreeNode root) {
  12. if (root == null) {
  13. return null;
  14. }
  15. TreeNode left = invertTree(root.left);
  16. TreeNode right = invertTree(root.right);
  17. root.left = right;
  18. root.right = left;
  19. return root;
  20. }
  21. }

迭代版

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public TreeNode invertTree(TreeNode root) {
  12. if (root == null) {
  13. return null;
  14. }
  15. Queue<TreeNode> queue = new LinkedList<>();
  16. queue.add(root);
  17. while (!queue.isEmpty()) {
  18. TreeNode current = queue.poll();
  19. TreeNode temp = current.left;
  20. current.left = current.right;
  21. current.right = temp;
  22. if (current.left != null) {
  23. queue.add(current.left);
  24. }
  25. if (current.right != null) {
  26. queue.add(current.right);
  27. }
  28. }
  29. return root;
  30. }
  31. }