力扣:669. 修剪二叉搜索树,今日份快乐

知识浅谈 🐄🐄🐄🐄🐄大佬
后端领域优质创作者
博客专家认证
2022-09-10 09:37:11

🍁 作者:知识浅谈,CSDN博客专家,华为云云享专家,阿里云签约博主,InfoQ签约作者
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈

今日份题解来了🛴🛴🛴

🎈题意

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。

所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

示例 1:

在这里插入图片描述

输入:root = [1,0,2], low = 1, high = 2
输出:[1,null,2]

示例 2:

在这里插入图片描述


输入:root = [3,0,4,null,2,null,null,1], low = 1, high = 3
输出:[3,2,null,1]

提示:
树中节点数在范围 [1, 104] 内
0 <= Node.val <= 104
树中每个节点的值都是 唯一 的
题目数据保证输入是一棵有效的二叉搜索树
0 <= low <= high <= 104

🎈题解

class Solution {
    public TreeNode trimBST(TreeNode root, int low, int high) {
        //真傻了,这题容易想多,当节点值小于low,左子树删掉,大于height,右子树删掉,否则重新处理左右子树。
        if(root==null) return null;
        if(root.val<low) return trimBST(root.right,low,high);
        else if(root.val>high)return trimBST(root.left,low,high);
        root.left = trimBST(root.left,low,high);
        root.right = trimBST(root.right,low,high);
        return root;
    }
}

看似短,却是代码的精华。

...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

9,301

社区成员

发帖
与我相关
我的任务
社区描述
知识浅谈(万道面试题)社区,旨在为找工作的小伙伴提供技术内容共享学习平台,助力每位小伙伴找到好工作,欢迎各位小伙伴的加入。
jvm小程序java 个人社区 吉林省·长春市
社区管理员
  • 知识浅谈
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

【社区倡导与禁止】

  • 社区倡导积极发帖,互相交流技术问题,学习心得。
  • 社区不限制技术领域,后端内容增加加精权重
  • 社区禁止发布低俗、不健康的内容

【社区积分规则】

  • 在社区「发帖」得10积分
  • 内容被管理员「加精」得10积分
  • 点赞他人内容得1积分
  • 评论内容得2积分

试试用AI创作助手写篇文章吧