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

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

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 思路:考的是二叉树节点的删除,只要满足条件的删除就好了,得注意的是一个节点是有两个孩子还是小于两孩子;
/** * 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)                                       //如果一开始传进来的是空,则返回空;            return null;        root.left = trimBST(root.left,L,R);           //递归的删除,从底层删起        root.right = trimBST(root.right,L,R);        if (root.val
R){ //这里是如何删除满足条件的节点的代码 if (root.left!=null&&root.right!=null){ root.val = findMax(root.left).val; //这是有两个孩子的情况 trimBST(root.left,root.val-1,root.val+1); } else { //只有一个孩子或无孩子 if (root.left==null) root = root.right; else if (root.right==null) root = root.left; } } return root; } public TreeNode findMax(TreeNode root){ if (root==null) return null; if (root.right==null) return root; else return findMax(root.right); }}

 

转载于:https://www.cnblogs.com/David-Lin/p/7704985.html

你可能感兴趣的文章
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>