这个题目比较简单,就是一个先序遍历的题目。
唯一需要注意的是在结构更改的时候保留好节点,不要丢失。
代码如下:
#include <iostream>
using namespace std;
struct TreeNode{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x): val(x), left(NULL), right(NULL){}
};
class Solution{
public:
void flatten(TreeNode *root){
flat(root);
}
TreeNode *flat(TreeNode *node){
if (node == NULL) {
return NULL;
}
if (node->right == NULL && node->left == NULL) {
return node;
}
TreeNode *n = node->right;
node->right = flat(node->left);
node->left = NULL;
TreeNode *temp = node;
while (temp->right != NULL) {
temp = temp->right;
}
temp->right = flat(n);
return node;
}
};