contest180: 1382. Balance a Binary Search Tree

1382. Balance a Binary Search Tree

Given a binary search tree, return a balanced binary search tree with the same node values.

A binary search tree is balanced if and only if the depth of the two subtrees of every node never differ by more than 1.

If there is more than one answer, return any of them.


思路: 本来就是BST就是要balance,所以就是要找到所有节点中间的median,作为root,然后recursively build其他的节点。 因为本来BST对应的节点就是inorder的,所以中序遍历得到的array就是有序的。

class Solution {
    List<Integer> sorted = new ArrayList<>();
    
    public TreeNode balanceBST(TreeNode root) {
        inorder(root);
        return arrToBST(0, sorted.size() - 1);
    }
    
    public void inorder(TreeNode root) {
        if (root == null) return;
        inorder(root.left);
        sorted.add(root.val);
        inorder(root.right);
    }
    
    public TreeNode arrToBST(int left, int right) {
        if (left > right) return null;
        int mid = left + (right - left) / 2;
        TreeNode node = new TreeNode(sorted.get(mid)); // build
        node.left = arrToBST(left, mid - 1); // left
        node.right = arrToBST(mid + 1, right);
        return node;
    }
}

实话说,这道题出的很好。我为自己做了不少BST的题,但是还是感觉并没有掌握感到非常烦躁。

BST的题:

Easy:

538. Convert BST to Greater tree
938. Range Sum BST
530. Minimum Absolute Difference in BST
653. Two Sum IV - Input is a BST
783. Minimum Difference between BST Nodes

Medium:

1214. Two Sum BSTs
450. Delete Node in BST
230. Kth Smallest Element in BST
449. Serialize & Deserialize BST
776. Split BST
333. Largest BST subtree
285. Inorder Successor BST
510. Inorder Successor BST II

Hard:

1373. Maximum Sum BST in BT
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容