首页 > 其他分享 >Day18 二叉树part08| LeetCode 669. 修剪二叉搜索树 , 108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树

Day18 二叉树part08| LeetCode 669. 修剪二叉搜索树 , 108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树

时间:2024-09-18 20:24:25浏览次数:1  
标签:right TreeNode int 二叉 搜索 转换 root left

669. 修剪二叉搜索树

669. 修剪二叉搜索树

 class Solution {
        public TreeNode trimBST(TreeNode root, int low, int high) {
           if(root==null) return null;
            //处理节点值<low 的情况:当前节点及其左子树的所有节点都不在范围内,继续在其右子树上修剪
           if(root.val<low)
           {
               TreeNode right=trimBST(root.right,low,high);
               return right;
           }
            //处理节点值>high 的情况:当前节点及其右子树的所有节点都不在范围内,继续在其左子树上修剪
           if(root.val>high)
           {
               TreeNode left=trimBST(root.left,low,high);
               return left;
           }
            //当前节点的值在范围内,保留当前节点,并递归修剪其左子树和右子树
           root.left=trimBST(root.left,low,high);
           root.right=trimBST(root.right, low,high);
           return root;

        }
    }

108.将有序数组转换为二叉搜索树

108. 将有序数组转换为二叉搜索树

class Solution {
        public TreeNode sortedArrayToBST(int[] nums) {

            TreeNode root=traserval(nums,0,nums.length-1);
            return  root;
        }
        TreeNode traserval(int[] nums,int left,int right)//左闭右闭
        {
            //终止条件
            if(left>right)
            {
                return null;

            }
            //单层逻辑
             int mid=(left+right)/2;
            TreeNode root=new TreeNode(nums[mid]);
           root.left=traserval(nums,left,mid-1);
           root.right=traserval(nums,mid+1,right);


            return root;
        }
    }

538.把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树

class Solution {
       int pre=0;
        public TreeNode convertBST(TreeNode root) {
            traversal(root);
            return root;

        }
        void traversal(TreeNode node)
        {
            if(node==null) return;
            //右中左

            traversal(node.right);
            node.val=pre+node.val;
            pre=node.val;
            traversal(node.left);
            

        }
    }

标签:right,TreeNode,int,二叉,搜索,转换,root,left
From: https://www.cnblogs.com/FreeDrama/p/18419282

相关文章

  • 【数据结构】二叉树的遍历
    堆的应用堆排列堆排序即利用堆的思想来进行排序,总共分为两个步骤:建堆升序:建大堆降序:建小堆利用堆删除思想来进行排序建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。voidHeapSort(int*a,intn){ //a数组直接建堆O(N) for(inti=......
  • C++浮点数半精度与单精度的相互转换
    代码//单精度转半精度unsignedshortcpu_float2half(floatf){unsignedshortret;unsignedx=*((int*)(void*)(&f));unsignedu=(x&0x7fffffff),remainder,shift,lsb,lsb_s1,lsb_m1;unsignedsign,exponent,mantissa;//Getrid......
  • 【DFS深度优先搜索】纵火犯
    【问题描述】给你一块n*m的草坪,问如果只点一次火,最多能烧多少块草坪。可以从n*m的草地中任意一个地方开始点火,火只能往上下左右传递,没有草的地方不能燃烧。【输入格式】输入由多个测试例组成。每个测试例的第一行含两个整数n和m,(1<=n,m<=100),分别表示01矩阵的行数与列......
  • [Clickhouse] Clickhouse 函数 : 数据类型转换
    0引言如无特殊说明,ck版本为21.3.4.251数据类型的支持情况查看当前受支持的数据类型select*fromsystem.data_type_families--selectname,case_insensitive,alias_tofromsystem.data_type_families;outputname|case_insensitive......
  • 消息转换器
    在日常开发中,经常会遇到一个问题,就是传输对象的时间数据json和对象之间的转换问题。针对这个问题,之前我知道的方法只有通过注解@JsonFormat(pattern="yyyy-MM-dd")来指定格式进行转换,但是这种方式有一个麻烦的地方在于,需要在每一个时间属性的上方都加上这个注解。其实,还有另一......
  • Vue实战指南:Vue中将一维对象数组转换为二维对象数组
    Vue实战指南:Vue中将一维对象数组转换为二维对象数组引言一维对象数组与二维对象数组的概念一维对象数组二维对象数组Vue中转换的方法示例一:使用计算属性实现转换示例二:使用methods中的函数实现转换示例三:使用Vue自定义指令实现转换示例四:使用Vuex进行状态管理实际开发......
  • [MySQL]编码转换
    在MySQL中,存储的编码格式与读取的编码格式是可以不同的。如果你的表中存储的是UTF-8编码的数据,但客户端想要以GBK编码来读取数据,可以通过调整MySQL的字符集设置来实现。以下是几种常见的解决方案:1.设置客户端连接的字符集MySQL提供了在客户端和服务器之间指定字符集的......
  • 数据结构(二叉树)练习题————考前必备合集
    今天在力扣和牛客网上找了一下题,下面附上题目链接,大家先做题再看答案1.检查两颗树是否相同。100.相同的树-力扣(LeetCode)2.另一颗树的子树。572.另一棵树的子树-力扣(LeetCode)3.翻转二叉树。226.翻转二叉树-力扣(LeetCode)4.判断一颗二叉树是否是平衡二叉树。110.......
  • 信息学奥赛初赛天天练-91-CSP-S2023基础题3-编译命令、树的重心、拓扑排序、进制转换
    PDF文档公众号回复关键字:202409172023CSP-S选择题1单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)11以下哪个命令,能将一个名为main.cpp的C++源文件,编译并生成一个名为main的可执行文件?()Ag++-omainmain.cppBg++-omain.cppmainCg++......
  • 如何提高网站搜索排名
    如何提高网站搜索排名如何提高搜索引擎排名#网站搭建#网站设计#网站建设你的网站上线了,百度收录了没有?咱们网站上线以后,首先关注的肯定是网站是否被百度收录,我们在百度上是否能搜索到网站实际场网站上线以后,咱们只要把SEO优化做好了,一般是2到三二周基本都能被收录,如果短时......