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;
        }
    }
     
     
  • 相关阅读:
    弹出窗口,关闭窗口刷新
    小知识
    将datatable转换为model
    根据空格换行
    获取和赋值checkbox,radiobutton,页面所有控件只读
    repater列求和
    internet 协议入门
    Django URL name详解
    Django 视图与网址进阶
    Django视图与网址
  • 原文地址:https://www.cnblogs.com/wxshi/p/7598553.html
Copyright © 2011-2022 走看看