From a5a088b35fe494205d61479a267205df4692f7cd Mon Sep 17 00:00:00 2001 From: jerryfishcode <91447694+jerryfishcode@users.noreply.github.com> Date: Mon, 27 Sep 2021 18:14:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A01382.=20=E5=B0=86=E4=BA=8C?= =?UTF-8?q?=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91=E5=8F=98=E5=B9=B3=E8=A1=A1?= =?UTF-8?q?=20JavaScript=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/1382.将二叉搜索树变平衡.md | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/problems/1382.将二叉搜索树变平衡.md b/problems/1382.将二叉搜索树变平衡.md index bce58c33..8e1cbe37 100644 --- a/problems/1382.将二叉搜索树变平衡.md +++ b/problems/1382.将二叉搜索树变平衡.md @@ -126,6 +126,29 @@ class Solution: Go: JavaScript: +```javascript +var balanceBST = function(root) { + const res = []; + // 中序遍历转成有序数组 + const travesal = cur => { + if(!cur) return; + travesal(cur.left); + res.push(cur.val); + travesal(cur.right); + } + // 有序数组转成平衡二叉树 + const getTree = (nums, left, right) => { + if(left > right) return null; + let mid = left + ((right - left) >> 1); + let root = new TreeNode(nums[mid]);// 中心位置作为当前节点的值 + root.left = getTree(nums, left, mid - 1);// 递归地将区间[left,mid−1] 作为当前节点的左子树 + root.right = getTree(nums, mid + 1, right);// 递归地将区间[mid+1,right] 作为当前节点的左子树 + return root; + } + travesal(root); + return getTree(res, 0, res.length - 1); +}; +``` ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)