diff --git a/problems/0108.将有序数组转换为二叉搜索树.md b/problems/0108.将有序数组转换为二叉搜索树.md index e82d6e95..213eb2b9 100644 --- a/problems/0108.将有序数组转换为二叉搜索树.md +++ b/problems/0108.将有序数组转换为二叉搜索树.md @@ -375,8 +375,25 @@ var sortedArrayToBST = function (nums) { }; ``` +## C +递归 +```c +struct TreeNode* traversal(int* nums, int left, int right) { + if (left > right) + return NULL; + int mid = left + ((right - left) / 2); + struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode)); + root->val = nums[mid]; + root->left = traversal(nums, left, mid - 1); + root->right = traversal(nums, mid + 1, right); + return root; +} - +struct TreeNode* sortedArrayToBST(int* nums, int numsSize) { + struct TreeNode* root = traversal(nums, 0, numsSize - 1); + return root; +} +``` ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw) diff --git a/problems/0538.把二叉搜索树转换为累加树.md b/problems/0538.把二叉搜索树转换为累加树.md index 6de98c6f..16b00817 100644 --- a/problems/0538.把二叉搜索树转换为累加树.md +++ b/problems/0538.把二叉搜索树转换为累加树.md @@ -293,6 +293,27 @@ var convertBST = function (root) { }; ``` +##C + +递归 +```c +int pre; +void traversal(struct TreeNode* node) { + if(!node) + return ; + traversal(node->right); + node->val = node->val + pre; + pre = node->val; + traversal(node->left); +} + +struct TreeNode* convertBST(struct TreeNode* root){ + pre = 0; + traversal(root); + return root; +} +``` + ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw) * B站视频:[代码随想录](https://space.bilibili.com/525438321)