114 flatten binary tree to linke

2017-11-20  本文已影响0人  larrymusk

linked list为单调递增,说明是前序遍历左右子树后的合并
1
/
2 5
/ \
3 4 6

case1:

2->3->4
5->6
root->left = "2"
root->rihjt = "5"

找到root->left的结尾,并指向root->right
root->right 指向root->left的头,同时root->left设为NULL

case2:
当root->left为空

root->right指向的链表 为5->6,不需要任何操作。

void flatten(struct TreeNode* root){
    if(root){
        flatten(root->left);
        flatten(root->right);
        if(root->left){
            struct TreeNode * p = root->left;
            while(p->right){
                p = p->right;
            }
            p->right = root->right;
            root->right = root->left;
            root->left = NULL;

        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读