博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode算法:Trim a Binar Search Tree
阅读量:5094 次
发布时间:2019-06-13

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

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 和最大数r 我们需要做的是对这棵树进行裁剪,让树里所有的节点值都满足在l和r之间 思想: 二叉排序树的特点是:对于任意一个节点,左子树任意节点数值都比跟节点小,右子树任意节点数值都比根大 所以考虑,对于任意一个节点, 如果值比l还小,那就应该抛弃这个根,去右子树寻找新的根 如果值比r还大,那就应该抛弃这个根,去左子树寻找新的根 这样的操作进行递归就可以了 我的python代码:
1 # Definition for a binary tree node. 2 class TreeNode: 3     def __init__(self, x): 4         self.val = x 5         self.left = None 6         self.right = None 7  8 class Solution: 9     def trimBST(self, root, L, R):10         """11         :type root: TreeNode12         :type L: int13         :type R: int14         :rtype: TreeNode15         """16         if root is None:17             return None18         if root.val >R:19             return self.trimBST(root.left ,L,R)20         if root.val

 

 

转载于:https://www.cnblogs.com/Lin-Yi/p/7501855.html

你可能感兴趣的文章
Django forms组件
查看>>
MySQL高效编程
查看>>
WinCE开机默认语言设置 .
查看>>
C++对C语言的非面向对象特性扩充(3)
查看>>
Javascript的怪癖
查看>>
从零开始,讲解详细,贴近实际应用,全面掌握用友ERP财务管理
查看>>
洛谷1522牛的旅行
查看>>
bzoj 3998 [TJOI2015]弦论——后缀自动机
查看>>
合并排序:归并排序
查看>>
简便算法
查看>>
爬取校园新闻
查看>>
Struts2默认Action
查看>>
API详解
查看>>
Django--ORM--模型增删改查--备忘
查看>>
转: 关于CAS cpu锁的技术说明。
查看>>
java中转义字符和路径符
查看>>
redux,react-redux、redux-thunk、redux-logger、redux-promise实例
查看>>
android开发的一点小总结,小杂言,小记录
查看>>
洛谷P3688/uoj#291. [ZJOI2017]树状数组
查看>>
Visio2013 64安装和激活
查看>>