链接:https://leetcode.com/problems/flatten-binary-tree-to-linked-list/
题目:将二叉树序列化为链表
思路:
先序遍历,保存一个全局的newroot,对于当前节点root:
暂存左右子节点,然后将newroot->right = root;newroot->left = NULL;newroot = root;
代码:
class Solution {
public:
void pre(TreeNode *root){
if(!root) return;
TreeNode *l = root->left;
TreeNode *r = root->right;
if(!newroot){
newroot = ret = root;
}
else {
newroot->right = root;
newroot->left = NULL;
newroot = root;
}
pre(l);
pre(r);
}
void flatten(TreeNode* root) {
newroot = ret = NULL;
pre(root);
root = ret;
}
private:
TreeNode *newroot;
TreeNode *ret;
};