美文网首页
二叉树展开为链表

二叉树展开为链表

作者: andy_tu | 来源:发表于2019-12-17 23:44 被阅读0次

    原理:利用先序遍历,将当前结点的左子结点 接到 当前结点的 右子结点处。 将当前结点右子结点接到 右子结点最后一个右结点后面。 代码如下:

    void flatten(struct TreeNode* root){
        
        if (root == NULL) return;
        //保存右结点
        struct TreeNode *oldRight = root->right;
        //将左结点接到右结点处
        root->right = root->left;
        //清空左结点
        root->left = NULL;
        //查找右边最后面一个右结点
        struct TreeNode *lastRight = root;
        while(lastRight->right != NULL)
            lastRight=lastRight->right;
        lastRight->right=oldRight;
        //处理右边结点
        flatten(root->right);
    }
    

    相关文章

      网友评论

          本文标题:二叉树展开为链表

          本文链接:https://www.haomeiwen.com/subject/bsqynctx.html