一、题目
二、代码
/**
* 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<int> re_vec;
//先序遍历
void recursion(TreeNode* process_node)
{
re_vec.push_back(process_node->val);
if(process_node->left) recursion(process_node->left);
if(process_node->right) recursion(process_node->right);
}
//原地修改 省空间 算法变复杂
void flatten(TreeNode* root)
{
int i,j;
if(root == nullptr)
{
}
else
{
recursion(root);
int length=re_vec.size();
// for(i=0;i<length;i++) std::cout<<" "<<re_vec[i];
// std::cout<<std::endl;
for(i=0;i<length;i++)
{
root->val=re_vec[i];
if(root->left) root->left=nullptr;
if(root->right) root=root->right;
else
{
if(i!=length-1)
{
//初始成任意值
root->right=new TreeNode(1);
root=root->right;
}
}
}
}
}
};