Question 226-invert binary tree
解题思路
这棵树上的所有子节点的左子树将转变为该子节点的右子树,而其右子树将转变为新的左子树。
所以,解题的步骤大致可以分为:
- 使用深度优先搜索,先遍历左子树,后遍历右子树
- 如果当前节点已经没有子节点,返回自身
- 如果当前节点有子树,通过第二步(深度优先搜索算法返回)分别得到当前节点的左子树和右子树(也就是,要遍历两次),然后将他们分别赋值给当前节点的右子节点和左子节点,最后将自身也作为一个子树,返回回去。
代码
class Solution {
public TreeNode invertTree(TreeNode root) {
if (null == root) return null;
TreeNode left = invertTree(root.left);
TreeNode right = invertTree(root.right);
root.left = right;
root.right = left;
return root;
}
}