题解 | #翻转牛群结构# 递归解法
翻转牛群结构
https://www.nowcoder.com/practice/f17e1aa5329f492f9107cbe303222ad6
知识点
递归 二叉树
思路分析
给出一个二叉树根节点,要我们翻转整棵二叉树。
首先,如果只有一个节点(只有根节点),我们不需要翻转。假如有子节点,需要先各自让左右子节点翻转之后,再交换左右子节点。而让子节点翻转显然是原问题的一个规模变小的子问题,可以用递归解决。
显然递归出口是当二叉树到达树底端,出现空节点返回空节点即可。
时间复杂度
只访问每个节点常数次,时间复杂度
AC code(C++)
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return TreeNode类
*/
TreeNode* invertTree(TreeNode* root) {
if (!root) return root;
auto r = invertTree(root->left);
auto l = invertTree(root->right);
root->left = l, root->right = r;
return root;
}
};
查看16道真题和解析