TOP101题解 | BM30#二叉搜索树与双向链表#
二叉搜索树与双向链表
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @author Senky * @date 2023.08.01 * @par url https://www.nowcoder.com/creation/manager/content/584337070?type=column&status=-1 * @param pRootOfTree TreeNode类 * @return TreeNode类 */ // Helper function to perform in-order traversal and convert to double linked list struct TreeNode* convertBSTToDLL(struct TreeNode* root, struct TreeNode** prev) { if (root == NULL) { return NULL; } // Convert left subtree struct TreeNode* left = convertBSTToDLL(root->left, prev); // Adjust pointers root->left = *prev; if (*prev != NULL) { (*prev)->right = root; } *prev = root; // Convert right subtree struct TreeNode* right = convertBSTToDLL(root->right, prev); // Return the head of the doubly linked list return (left != NULL) ? left : root; } struct TreeNode* Convert(struct TreeNode* pRootOfTree) { struct TreeNode* prev = NULL; return convertBSTToDLL(pRootOfTree, &prev); }#TOP101#
TOP101-BM系列 文章被收录于专栏
系列的题解