来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/NYBBNL 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。
解答
把二叉搜索树展开为升序链表:
- 中序遍历是必须的
执行完左子节点,就把左子节点置为 null,然后把它添加到上一个节点 prev.right 上
/*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val = (val===undefined ? 0 : val)* this.left = (left===undefined ? null : left)* this.right = (right===undefined ? null : right)* }*//*** @param {TreeNode} root* @return {TreeNode}*/var increasingBST = function(root) {let head, prev;function travere (node) {if (!node) return null;travere(node.left);node.left = null;if (!head) {head = prev = node;} else {prev.right = node;prev = prev.right;}travere(node.right);}travere(root);return head;};
