来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/increasing-order-search-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

给你一棵二叉搜索树的 root ,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。

解答

二叉搜索树,中序遍历产出结果就是个升序数组,升序链表可以通过改造实现

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val, left, right) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.left = (left===undefined ? null : left)
  6. * this.right = (right===undefined ? null : right)
  7. * }
  8. */
  9. /**
  10. * @param {TreeNode} root
  11. * @return {TreeNode}
  12. */
  13. var increasingBST = function(root) {
  14. let head = new TreeNode();
  15. traverse(root, head);
  16. function traverse (node, preNode) {
  17. if (!node) return preNode;
  18. preNode = traverse(node.left, preNode);
  19. preNode.right = new TreeNode(node.val);
  20. preNode = preNode.right;
  21. preNode = traverse(node.right, preNode);
  22. return preNode;
  23. }
  24. return head.right;
  25. };