class Solution {
public:
void flatten(TreeNode* root) {
if(root==NULL) return ;
flattenTree(root);
}
TreeNode* flattenTree(TreeNode* root) {
if(root==NULL) return NULL;
TreeNode* temp = root->right;
root->right = flattenTree(root->left);
root->left = NULL;
TreeNode* cursor = root;
while(cursor->right!=NULL){
cursor = cursor->right;
}
cursor->right = temp;
flattenTree(cursor->right);
return root;
}
};
public:
void flatten(TreeNode* root) {
if(root==NULL) return ;
flattenTree(root);
}
TreeNode* flattenTree(TreeNode* root) {
if(root==NULL) return NULL;
TreeNode* temp = root->right;
root->right = flattenTree(root->left);
root->left = NULL;
TreeNode* cursor = root;
while(cursor->right!=NULL){
cursor = cursor->right;
}
cursor->right = temp;
flattenTree(cursor->right);
return root;
}
};
本文介绍了一种将任意二叉树转换为单链表的算法,即扁平化算法。通过递归方式,该算法能确保遍历过程中左子树节点始终位于右子树节点之前,并且不使用额外的数据结构。
846

被折叠的 条评论
为什么被折叠?



