题目
Leetcode 114. 二叉树展开为链表
代码(首刷自解)
class Solution {
public:
void flatten(TreeNode* root) {
track(root);
}
TreeNode* track(TreeNode* root) {
if(!root)
return root;
track(root->left);
track(root->right);
auto left = root->left;
auto right = root->right;
root->left = nullptr;
root->right = left;
auto p = root;
while(p->right) {
p = p->right;
}
p->right = right;
return root;
}
};
代码(10.4 二刷看解析)
class Solution {
public:
void flatten(TreeNode* root) {
traversal(root);
}
TreeNode* traversal(TreeNode* root) {
if(!root)
return root;
traversal(root->left);
traversal(root->right);
auto left = root->left, right = root->right;
root->left = nullptr;
root->right = left;
auto p = root;
while(p->right)
p = p->right;
p->right = right;
return root;
}
};