将二叉树中序遍历展开成一个链表
牛客网 26、二叉搜索树与双向链表 的简化版
void inorder(TreeNode* root, TreeNode*& pre, TreeNode*& head) {
if (!root) return;
inorder(root->left, pre, head);
if (!head) {
head = root;
pre = root;
}
else {
pre->right = root;
pre = root;
}
inorder(root->right, pre, head);
}
void convert2list(TreeNode* root) {
if (!root) return;
TreeNode* pre = nullptr,*head = nullptr;
inorder(root, pre, head);
}
将一个二叉树先序遍历展开成一个链表
leetcode 114. 二叉树展开为链表
class Solution {
public:
void flatten(TreeNode* root) {
if(!root) return ;
if(root->left) flatten(root->left);
if(root->right) flatten(root->right);
TreeNode* t = root->right;
root->right = root->left;
root->left = nullptr;
while(root->right) root = root->right;
root->right = t;
}
};