博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 669. Trim a Binary Search Tree
阅读量:6569 次
发布时间:2019-06-24

本文共 1703 字,大约阅读时间需要 5 分钟。

Problem

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 = 2Output:     1      \       2

Example 2:

Input:     3   / \  0   4   \    2   /  1  L = 1  R = 3Output:       3     /    2     / 1

Solution

Recursive

class Solution {    public TreeNode trimBST(TreeNode root, int L, int R) {        if (root == null || L > R) return null;        if (root.val > R) return trimBST(root.left, L, R);        if (root.val < L) return trimBST(root.right, L, R);        if (root.val >= L && root.val <= R) {            root.left = trimBST(root.left, L, R);            root.right = trimBST(root.right, L, R);        }        return root;    }}

Iterative

class Solution {    public TreeNode trimBST(TreeNode root, int L, int R) {        if (root == null) return null;        while (root.val < L || root.val > R) {            if (root.val < L) {                root = root.right;            }            if (root.val > R) {                root = root.left;            }        }        TreeNode dummy = root;        while (dummy != null) {            while (dummy.left != null && dummy.left.val < L) {                dummy.left = dummy.left.right;            }            dummy = dummy.left;        }                dummy = root;        while (dummy != null) {            while (dummy.right != null && dummy.right.val > R) {                dummy.right = dummy.right.left;            }            dummy = dummy.right;        }                return root;    }}

转载地址:http://yfvjo.baihongyu.com/

你可能感兴趣的文章
泛型实现中没有正确lock引用类型的一个隐藏bug分析
查看>>
win7 64系统安装oracle客户端使用PL/SQL Developer工具
查看>>
silverlight中Combox绑定数据以及动态绑定默认选定项的用法
查看>>
浅谈算法和数据结构: 十 平衡查找树之B树
查看>>
【Algorithm】插入排序
查看>>
WCF寄宿到Windows Service
查看>>
Ajax.ActionLink()方法的使用
查看>>
csdn 泄露用户密码害人不浅啊。
查看>>
ThinkPadT440 Ubuntu14.04 RTL8192EE 链接无线网
查看>>
OpenCV Windows7 VC6.0安装以及HelloWorld
查看>>
苹果开发人员账号注冊流程
查看>>
微铺子点单系统具体介绍 - 争做国内最专业的微信商店平台,微信外卖订餐系统!...
查看>>
ExecuteScalar
查看>>
hdu1213 How Many Tables
查看>>
依赖注入框架Autofac的简单使用
查看>>
pomelo源代码分析(一)
查看>>
白话经典算法系列之七 堆与堆排序
查看>>
开机就提示“请安装TCP/IP协议,error=10106”的解决的方法
查看>>
一个HexToInt的C/C++函数
查看>>
使用SVN进行项目版本管理
查看>>