1. 题目
剑指 Offer II 052. 展平二叉搜索树
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e8659e926bf4349087af795f32c07f7.png)
2. 思路
- 对原始二叉搜索树进行中序遍历,得到的是从小到大升序的节点数组res;
- new一个新的根节点,遍历res数组,重新new节点值,将每一个节点作为右子树的根节点挂到新的根节点上,这样就得到了如题目要求的新的树;
3. 代码实现
var increasingBST = function(root) {
let res = []
function inOrder(root, res) {
if (root === null) return
inOrder(root.left, res)
res.push(root.val)
inOrder(root.right, res)
}
inOrder(root, res)
let newRoot = new TreeNode(),
curNode = newRoot
for (let val of res) {
curNode.right = new TreeNode(val)
curNode = curNode.right
}
return newRoot.right
};
4. 参考
【剑指 Offer II 052. 展平二叉搜索树】中序遍历 + 构造右树 通俗易懂 JavaScript 题解