zoukankan      html  css  js  c++  java
  • 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
    给出的是二叉搜索树,先复习下什么是二叉搜索树
    - 1.也就说一个根节点只有两个子树
    - 2.左子树 < 根节点 < 右子树
     
    题目的大概意思就是删除`[L, R]`范围外的节点
    /**
    * Definition for a binary tree node.
    * public class TreeNode {
    *    int val;
    *    TreeNode left;
    *    TreeNode right;
    *    TreeNode(int x) { val = x; }
    * }
    */
    class Solution {
        public TreeNode trimBST(TreeNode root, int L, int R) {
            if(root == null || L > R) return null;  //递归的出口
            if(root.val < L)return trimBST(root.right,L,R);    
            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;
        }
    }
     
     
  • 相关阅读:
    学生信息管理系统
    设计模式,单例模式
    基础考试题(1)
    基础考试题(0)
    python面向对象进阶
    python面向对象
    Python反射
    14 定时器
    13 JS中的面向对象
    12 DOM操作的相关案例
  • 原文地址:https://www.cnblogs.com/wxshi/p/7598553.html
Copyright © 2011-2022 走看看