【嘎】二叉树-226. 翻转二叉树
题目:
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
下面是错误的解答:
class Solution { public TreeNode invertTree(TreeNode root) { TreeNode left = root.left; TreeNode right = root.right; if (left != null) { invertTree(left); } if (right != null) { invertTree(right); } if (left != null && right != null) { int leftval = left.val; int rightval = right.val; right.val = leftval; left.val = right.val; } return root; } }
然后。。虽然知道是错的,但是想不出来怎么才是对的
// 先序遍历,根左右 从上向下交换 public TreeNode invertTree(TreeNode root) { if (root == null) return null; TreeNode rightnode = root.right; root.right = invertTree(root.left); // 交换左子树结果赋值给右子树,所以要先记录右子树 root.left = invertTree(rightnode); return root; } // 中序遍历,左根右 public TreeNode invertTree(TreeNode root) { if (root == null) return null; invertTree(root.left); // 递归找到左节点 TreeNode rightnode = root.right; root.right = root.left; root.left = rightnode; // 递归找到右节点 继续交换:因为此时左右节点已经交换了,所以此时的右节点为root.left invertTree(root.left);
return root; } // 后序遍历,左右根 从下向上交换 public TreeNode invertTree(TreeNode root) { if (root == null) return null; TreeNode leftnode = invertTree(root.left); TreeNode rightnode = invertTree(root.right); root.right = leftnode; root.left = rightnode; return root; }
越努力越幸运~ 加油ヾ(◍°∇°◍)ノ゙

浙公网安备 33010602011771号