难度简单131
给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。
示例 :
输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9 输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9] 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9
提示:
- 给定树中的结点数介于
1
和100
之间。- 每个结点都有一个从
0
到1000
范围内的唯一整数值。
这题还有很多疑问呢!让我想想,再想想
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
vector<TreeNode*> nodes;
TreeNode* increasingBST(TreeNode* root) {
vector<int> res;
sorted(root, res);
TreeNode* ans = new TreeNode(0);
TreeNode* cur = ans;
for(int v: res){
cur->right = new TreeNode(v);
cur = cur->right;
}
return ans->right;
}
void sorted(TreeNode* root, vector<int> &res){
if (root == nullptr){
return ;
}
sorted(root->left, res);
res.push_back(root->val);
sorted(root->right, res);
}
};