Tree Flashcards
1
Q
Balance a BST
Given a binary search tree, return a balanced binary search tree with the same node values.
A
class Solution { List sortedArr = new ArrayList<>(); public TreeNode balanceBST(TreeNode root) { inorderTraverse(root); return sortedArrayToBST(0, sortedArr.size() - 1); } void inorderTraverse(TreeNode root) { if (root == null) return; inorderTraverse(root.left); sortedArr.add(root); inorderTraverse(root.right); } TreeNode sortedArrayToBST(int start, int end) { if (start > end) return null; int mid = (start + end) / 2; TreeNode root = sortedArr.get(mid); root.left = sortedArrayToBST(start, mid - 1); root.right = sortedArrayToBST(mid + 1, end); return root; } }