105.(114)二叉树展开为链表

    技术2023-08-14  106

    题目描述:

    给定一个二叉树,原地将它展开为一个单链表。

    例如,给定二叉树

        1    / \   2   5  / \   \ 3   4   6 将其展开为:

    1  \   2    \     3      \       4        \         5          \           6

    代码:

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: void flatten(TreeNode* root) { while(root) { if(root->left) { TreeNode *temp_root=root->left; while(temp_root->right) { temp_root=temp_root->right; } temp_root->right=root->right; root->right=root->left; root->left=NULL; } root=root->right; } } };

    执行效率:

    执行用时:8 ms, 在所有 C++ 提交中击败了77.08%的用户

    内存消耗:12.3 MB, 在所有 C++ 提交中击败了6.67%的用户

    Processed: 0.012, SQL: 9