晚上 21:40 感觉现在很振奋 甚至还能再来几个小时(不
用这道题结束一天的学习(_)
题目
分析
每个节点的左右子树都进行交换
代码
/**
* 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) {
dfs(root);
return root;
}
public void dfs(TreeNode root){
if(root==null)
return;
TreeNode tmp=root.right;
root.right=invertTree(root.left);
root.left=invertTree(tmp);
}
}
复杂度
时间复杂度:O(N),其中 N 为二叉树节点的数目。我们会遍历二叉树中的每一个节点,对每个节点而言,我们在常数时间内交换其两棵子树。
空间复杂度:O(N)。使用的空间由递归栈的深度决定,它等于当前节点在二叉树中的高度。在平均情况下,二叉树的高度与节点个数为对数关系,即 O(logN)。而在最坏情况下,树形成链状,空间复杂度为O(N)。