首页 > 其他 > 详细

leetcode114.二叉树转换为链表

时间:2020-06-10 21:18:55      阅读:32      评论:0      收藏:0      [点我收藏+]

思路:

    1
   /   2   5
 / \   3   4   6

//将 1 的左子树插入到右子树的地方
    1
           2         5
     / \             3   4         6        
//将原来的右子树接到左子树的最右边节点
    1
           2          
     / \          
    3   4  
                   5
                       6
            
 //将 2 的左子树插入到右子树的地方
    1
           2          
       \          
        3       4  
                                   5
                                       6   
        
 //将原来的右子树接到左子树的最右边节点
    1
           2          
       \          
        3      
                   4  
                       5
                           6         

不断反复以上步骤,代码如下:

void flatten(TreeNode* root)
{
    if(!root) return;
    while(root) {
        if(!root->left) {
            root = root->right;
        }
        else {
            //找左子树最右边节点
            TreeNode* pre = root->left;
            while(pre->right) {
                pre = pre->right;
            }
            //将原来的右子树接到左子树最右边
            pre->right = root->right;
            root->right = root->left;
            root->left = NULL;
            //考虑下一个节点
            root = root->right;
        }
    }
}

 

leetcode114.二叉树转换为链表

原文:https://www.cnblogs.com/joker1937/p/13088262.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!