LeetCode Flatten Binary Tree to Linked List
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1
/ \
2 5
/ \ \
3 4 6
The flattened tree should look like:
1
\
2
\
3
\
4
\
5
\
6
void flatten(TreeNode *root) {
if(NULL == root || (root->left==NULL&&root->right==NULL))
return;
if(root->left != NULL)
{
flatten(root->left);
}
if(root->right != NULL)
{
flatten(root->right);
}
//如果父节点没有左子树,则不用交换
if(root->left==NULL)
return;//如果父节点左子树不为空,则搜索到父节点左孩子的最底层右孩子,保存在p中
TreeNode** p = &(root->left->right);
while(*p != NULL)
p = &((*p)->right);
//将父节点的右孩子接入
*p = root->right;
root->right = root->left;
root->left = NULL;
}
本文介绍了一种将二叉树结构通过特定算法展平为链表的方法。通过递归地处理二叉树的左右子树,并调整指针连接,最终实现二叉树的每个节点只拥有一个后继节点的链表形式。此过程不使用额外的数据结构,完全在原地进行。
241

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



