669. Trim a Binary Search Tree

題目和思路

Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that all its elements lies in [L, R] (R >= L). You might need to change the root of the tree, so the result should return the new root of the trimmed binary search tree.

Example 1:
Input: 
    1
   / \
  0   2

  L = 1
  R = 2

Output: 
    1
      \
       2
Example 2:
Input: 
    3
   / \
  0   4
   \
    2
   /
  1

  L = 1
  R = 3

Output: 
      3
     / 
   2   
  /
 1

遞歸修剪,比L小的則繼續(xù)修剪當前節(jié)點的右子樹;比R大的則繼續(xù)修剪當前節(jié)點的左子樹;若是在范圍內,則將左子樹設為遞歸左子樹的返回值,右子樹設為遞歸右子樹的返回值。

代碼

package tree;

/**
 * Created by liqiushi on 2018/1/31.
 */
public class TrimABinarySearchTree {
    public TreeNode trimBST(TreeNode root, int L, int R) {
        if(root == null){
            return root;
        }
        if(root.val < L ){
            return trimBST( root.right,  L,  R);
        }else if(root.val > R){
            return trimBST( root.left,  L,  R);
        }
        root.left = trimBST( root.left,  L,  R);
        root.right = trimBST( root.right,  L,  R);
        return root;
    }
}

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容