3
/
1
\
2
示例 2:
输入: [3,1,4,null,null,2]
3
/ \
1 4
/
2
输出: [2,1,4,null,null,3]
2
/ \
1 4
/
3
进阶:
使用 O(n) 空间复杂度的解法很容易实现。
你能想出一个只使用常数空间的解决方案吗?
1. 中序遍历,存储数组
2. 排序数组
3. 重新赋值,恢复二叉树
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
void recoverTree(TreeNode* root) {
if(root==NULL)
return;
TreeMidVal(root);
TreeMidSort();
recover(root);
}
private:
vector<int> vec_val;
/* 中序遍历 */
void TreeMidVal(TreeNode *root){
if(root==NULL)