binaryTree

kingcwt2023-07-31前端算法 基础数据结构 二叉树

二叉树转二叉搜索树


class TreeNode {
  constructor(node) {
    this.val = node
    this.left = null
    this.right = null
  }
}



function inorderTraversal(root, result) {
  if (!root) return null
  inorderTraversal(root.left, result)
  result.push(root.val)
  inorderTraversal(root.right, result)
}

function sortedArrayToBST(nums) {
  let len = Math.floor(nums.length / 2)
  if (nums.length === 0) return null
  let root = new TreeNode(nums[len])
  root.left = sortedArrayToBST(nums.slice(0, len))
  root.right = sortedArrayToBST(nums.slice(len + 1, nums.length))
  return root
}

function convertToBST(root) {
  let values = []
  inorderTraversal(root, values)
  values = values.sort((a, b) => a - b)
  return sortedArrayToBST(values)
}


let root = new TreeNode(10)
root.left = new TreeNode(2)
root.right = new TreeNode(7)
root.left.left = new TreeNode(8)
root.left.right = new TreeNode(4)


console.log(convertToBST(root))
Last Updated 10/16/2023, 7:06:22 AM
What do you think?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8