首页 > 其他分享 >Day 20 二叉树part07

Day 20 二叉树part07

时间:2024-07-22 14:57:06浏览次数:6  
标签:right 20 val TreeNode 二叉树 return root Day left

235. 二叉搜索树的最近公共祖先

总体上思想与236. 二叉树的最近公共祖先思路是一致的,都是去搜索p,q的位置。这个大框架是最难理解的部分,具体可以再去看看236的题解。这道题在其基础上利用了搜索树的性质,当根节点的val大于pq两者时,就去左子树找结果即可;反之则去右子树中查找。当p,q一个比root大另一个小,说明p,q位于root的两个子树中,其最近公共祖先一定是root。

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null || root == p || root == q) return root;
        if(root.val > p.val && root.val > q.val) 
            return lowestCommonAncestor(root.left, p, q);
        if(root.val < p.val && root.val < q.val)
            return lowestCommonAncestor(root.right, p, q);
        return root;
    }
}

701. 二叉搜索树中的插入操作

还是要更好的去理解递归。具体看注释

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) { // 返回值为  插入节点后的树的根节点
        if(root == null) return new TreeNode(val); //遍历到需要插入的位置,新建节点并返回
        if(root.val > val) root.left = insertIntoBST(root.left, val);  //插入位置位于左子树,函数返回值为插入后左子树的根节点
        if(root.val < val) root.right = insertIntoBST(root.right, val); //同上
        return root; //左子树和右子树都处理好了,直接返回根节点即可
    }
}

450. 删除二叉搜索树中的节点

class Solution {
    public TreeNode deleteNode(TreeNode root, int key) { //返回值为删除节点后的二叉搜索树的根
        if(root == null) return root; 
        if(root.val == key){ //需要删除的是根节点
            if(root.left == null) //若左子树为空,将右子树返回即可
                return root.right;
            if(root.right == null) //同理
                return root.left;
            //左右子树都不为空
            TreeNode leftMax = root.left; //找到左子树的最大值
            while(leftMax.right != null){
                leftMax = leftMax.right;
            }
            root.left = deleteNode(root.left, leftMax.val); //从左子树中删除leftMax
            leftMax.left = root.left;
            leftMax.right = root.right;
            return leftMax; //将左子树的最大值作为新的根节点
        }
        if(root.val > key) //要删除的节点位于左子树
            root.left = deleteNode(root.left, key);
        if(root.val < key) //位于右子树
            root.right = deleteNode(root.right, key);
        return root;
    }
}

标签:right,20,val,TreeNode,二叉树,return,root,Day,left
From: https://www.cnblogs.com/12sleep/p/18316005

相关文章

  • DASCTF 2023六月挑战赛|二进制专项 PWN (上)
    DASCTF2023六月挑战赛|二进制专项PWN(上)1.easynoteedit函数对长度没有检查free函数存在UAF漏洞思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使用fastbinattack,把__malloc_hook,写入one_gadget2.通过unlink修改freegot表为systemexp:frompwnimport*context(log_lev......
  • 【Web】ImaginaryCTF 2024 部分题解
    目录journalcrystalsP2CreadmeTheAmazingRacejournal简单的assert命令拼接payload:?file=test','..')===true||system("echo`tac/flag-cARdaInFg6dD10uWQQgm.txt`")||strpos('testcrystalsdocker-compose.yml里让服务报错读到泄露的hos......
  • DASCTF 2023六月挑战赛|二进制专项 PWN (上)
    DASCTF2023六月挑战赛|二进制专项PWN(上)1.easynoteedit函数对长度没有检查free函数存在UAF漏洞思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使用fastbinattack,把__malloc_hook,写入one_gadget2.通过unlink修改freegot表为systemexp:frompwnimport*context(lo......
  • 代码随想录day6 | 242 有效字母异位词 349 两个数组交际 202 快乐数 1 两数之和
    hash表遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法242判断字母异位词关于字符串的遍历问题//什么情况下遍历的是rune[]int36类型,什么情况下遍历的是char字节类型?s:="Hello,世界"fori,r:=ranges{ fmt.Printf("Index:%d,Rune:%c,......
  • 2024.7.20 test
    A你要求\([L,R]\)里面有多少数\(x\)满足\(x\)十进制下数码的种类数为\(A\)。\(L\leR\le10^{2\times10^5}\)。如果我们直接数位dp,状态多记一维表示当前出现的数码种类集合,会导致超时且超空间。我们发现如果没有最高位限制,即随便填\(m\)个数,满足出现的种类为\(A\),......
  • 2024.7.22 test
    A你有序列\(A_i\),使得\(A_i\)增加\(1\)的代价是\(b_i\),问使得所有\(A\)互不相同的最小代价。\(n\le1e5,A_i\le1e9\)对于\(A_i\)相同的,取\(B_i\)最大的留下,剩下的都\(+1\),跟后面的继续比较。B你要求所有边\(or\)起来最小的生成树,\(q\)次询问,每次新加入一条权......
  • NOI2024 游记
    前言菜,真的太菜啦。\(\texttt{Day0}\)热,热,热,真的汗流浃背了。入住。西西弗,回答我,是不是\(20000\)元的\(\texttt{D}\)类报的人越多你给的宿舍条件越好啊啊喂。甚至发了一堆衣服包包和生活用品,真是太"感动了"。晚餐。迎面而来的蛋炒饭吸引了我的眼球,这东西我每天吃,吃一......
  • Warning[204-68] 以及 Vivado HLS与Vivado的资源差异
            这篇学习记录起源于项目以ip导出后,在HLS综合(synthesis)资源与Vivado内ip综合(synthesis)存在巨大差异,本文没有数据仅以文字记录。        所有问题均基于VivadoHLS2019.1。目录1、资源差异1.1、首先vivado内的ip综合分为Global和Out-Of-Context两......
  • 【浙江工业大学主办,ACM独立出版,已连续举办六届 | 往届均已见刊并成功实现EI Compendex
    第七届计算机信息科学与人工智能国际学术会议(CISAI2024)将于2024年09月6-8日在中国浙江-绍兴举行。计算机信息科学与人工智能国际学术会议的主题主要围绕“信息科学”与“人工智能”的新研究展开。20247th InternationalConferenceonComputerInformationSciencea......
  • 2024-07-22 如何让宽度和高度一致(flex布局)
    <template><divclass="demo-container"><divclass="demo-item"><divclass="demo-title">方向指示类图标</div><divclass="demo-content">......