开始看到题目中说有原地算法,想挑战一下的,但是想了一会没什么思路,还是用常规的遍历解法来做了。 逻辑十分简单,遍历头结点,交换左右子树,再依次遍历左右子树,直到遍历所有结点。 使用递归进行遍历,时间复杂度为O(n),同时需要维护一个递归栈,空间复杂度为O(n),满足题目要求。 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */...