diff --git a/problems/0226.翻转二叉树.md b/problems/0226.翻转二叉树.md index 7876eb99..3b96b4f6 100644 --- a/problems/0226.翻转二叉树.md +++ b/problems/0226.翻转二叉树.md @@ -203,22 +203,27 @@ public: Java: -```java + +```Java class Solution { + /** + * 前后序遍历都可以 + * 中序不行,因为先左孩子交换孩子,再根交换孩子(做完后,右孩子已经变成了原来的左孩子),再右孩子交换孩子(此时其实是对原来的左孩子做交换) + */ public TreeNode invertTree(TreeNode root) { - invert(root); + if (root == null) { + return null; + } + invertTree(root.left); + invertTree(root.right); + swapChildren(root); return root; } - private static void invert (TreeNode root) { - if (root == null) return; - - invert(root.left); - TreeNode t = root.left; + private void swapChildren(TreeNode root) { + TreeNode tmp = root.left; root.left = root.right; - root.right = t; - - invert(root.left); + root.right = tmp; } } ```