2020年9月16日 翻转二叉树 invertTree
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root) {
}
}
解题思路:
这道题如果放在三个月之前,我大概率会因为一道简单题焦头烂额,但是现在了解了套路之后,只不过是针对性地做一些调整罢了。
这道题如果不出意外的话应该可以使用递归来实现,在翻转一个节点的两个子节点之前,先递归翻转两个子节点。
实现代码:
public TreeNode invertTree(TreeNode root) {
//边界状态
if (root==null)
return root;
//先递归
invertTree(root.right);
invertTree(root.left);
//临时变量,翻转当前节点的两个子节点
TreeNode newNode=root.right;
root.right=root.left;
root.left=newNode;
return root;
}