我具有将二叉树转换为链接列表的功能。由于flatten_helper函数返回void,因此我无法理解递归的工作原理。那么,当递归函数返回void时,实际发生了什么?有人可以帮助我了解此处代码中发生的情况吗?
此外,由于我正在努力了解这些类型的问题,因此非常感谢理解树问题中的递归的任何链接。
void flatten_helper(struct TreeNode* root, struct TreeNode** prev)
{
if (root == NULL) return;
flatten_helper(root->right, prev);
flatten_helper(root->left, prev);
root->right = *prev;
root->left = NULL;
*prev = root;
}
void flatten(struct TreeNode* root)
{
struct TreeNode **prev;
prev = (struct TreeNode *)malloc(sizeof(struct TreeNode *));
*prev = NULL;
flatten_helper(root, prev);
*prev = NULL;
free(prev);
}
代码积分-Leetcode
答案 0 :(得分:1)
不要将flatten_helper()视为函数,而应将其视为过程。它不返回值,实际上可以完成一些工作(将root-> right设置为* prev,将root-> left设置为NULL,并将* prev设置为root)。