给定一棵 Binary Search Tree(BST)和一个范围 [min, max],请把 BST 上所有在 [min, max] 范围之外的节点都删除掉,且保持删除节点后的新树仍是 BST。如下是一棵 BST,给定范围为 [-10, 13]
在删除掉所有在 [-10, 13] 范围之外的节点后,得到的新 BST 如下
解:对 BST 上的每个节点,有两种情况
(1)节点在给定范围外,这种情况还可再细分两种情况
(a)节点小于 min;
(b)节点大于 max;
(2)节点在给定范围之内。
我们以后续遍历的方式处理每个节点。对于情况 2,我们不需要做任何处理。对于情况 1,我们要删除相应节点,如果是情况 1.a,只要删除相应节点,然后把其右子树根作为这棵子树的根节点;如果是情况