二叉树——114. 二叉树展开为链表

二叉树——114. 二叉树展开为链表

题目:

思路:

还是老思路:对结点操作是啥,遍历顺序是什么。

首先遍历顺序很明显是后序,因为我们需要先到最底层,开始我们的操作。

然后操作就是先左节点变为新的右节点,原来的右节点拼接到新的右节点下面,然后重复就行了。

代码:

class Solution {
public:
    void flatten(TreeNode* root) {
        if(root == nullptr) return;
        
        /**开始后序遍历**/
        flatten(root->left);        // 左
        flatten(root->right);       // 右

        // 设置二个树节点暂存左子树和右子树
        TreeNode* left = root->left;
        TreeNode* right = root->right;

        // 将左子树当做右子树
        root->left = NULL;
        root->right = left;

        // 将原来的右子树拼接到到现在的右子树下面
        TreeNode* p = root;
        while(p->right != NULL){
            p = p->right;
        }
        p->right = right;
    }
};

Rank:

Tips:

posted @ 2021-03-22 14:04  Originhhh  阅读(50)  评论(0)    收藏  举报