代码随想录算法训练营第十九

news/2024/6/19 6:18:26 标签: 算法

98.验证二叉搜索树

class Solution {
    public boolean isValidBST(TreeNode root) {
        Stack<TreeNode> stack = new Stack<>();

       TreeNode pre = null;

       if(root != null){
           stack.add(root);
       }

       while(!stack.isEmpty()){
           TreeNode curr = stack.peek();

           if(curr != null){
               stack.pop();

               if(curr.right != null){
                   stack.add(curr.right);
               }

               stack.add(curr);
               stack.add(null);

               if(curr.left != null){
                   stack.add(curr.left);
               }
           }else {
               stack.pop();

               TreeNode temp = stack.pop();

               if(pre != null && pre.val >= temp.val){
                   return false;
               }

               pre = temp;
           }
       }
       
       return true;

    }
}

700. 二叉搜索树中的搜索

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root == null || root.val == val){
            return root;
        }

        TreeNode left = searchBST(root.left,val);

        if(left != null){
            return left;
        }

        return searchBST(root.right,val);
    }
}

617. 合并二叉树

class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {

         if(root1 == null){
            return root2;
        }

        if(root2 == null){
            return root1;
        }

        root1.val += root2.val;

        root1.left = mergeTrees(root1.left,root2.left);


        root1.right = mergeTrees(root1.right,root2.right);

        return root1;


    }
}

654. 最大二叉树

class Solution {
    public TreeNode constructMaximumBinaryTree(int[] nums) {
if(nums.length == 0){
            return null;
        }

        int max = 0;

        Map<Integer,Integer> map = new HashMap<>();

        for(int i = 0 ; i < nums.length ; i++){
            max = Math.max(max,nums[i]);
            map.put(nums[i],i);
        }

        int index = map.get(max);

        TreeNode root = new TreeNode(max);

        int[] leftNums = new int[index];

        int[] rightNums = new int[nums.length-1-index];

        for(int i = 0 ; i < index; i ++){
            leftNums[i] = nums[i];
        }

        for(int i = index+1 ; i < nums.length ; i++){
            rightNums[i-(index+1)] = nums[i];
        }

        root.left = constructMaximumBinaryTree(leftNums);

        root.right = constructMaximumBinaryTree(rightNums);

        return root;
    }
}


http://www.niftyadmin.cn/n/479525.html

相关文章

基于matlab使用校准相机拍摄的两张图像中恢复相机运动并重建场景的3D结构(附源码)

一、前言 运动结构 &#xff08;SfM&#xff09; 是从一组 3-D 图像估计场景的 2-D 结构的过程。此示例演示如何从两个图像估计校准相机的姿势&#xff0c;将场景的三维结构重建为未知比例因子&#xff0c;然后通过检测已知大小的对象来恢复实际比例因子。 此示例演示如何从使…

应用打包部署k8s (包括dockerfile打包及仓库上传)

文章目录 一、docker run 运行测试1.数据库测试2.接口测试3.前端界面测试 二、编写dockerfile1.前端2.后端 三、推送镜像&#xff08;后面k8s就从这里获取镜像了&#xff09;四.编写 docker-compose.yml五.K8s部署1.yaml文件编写及部署houduan-deployment.yamlhouduan-service.…

(二十二)数据符号化——矢量数据符号化②

数据符号化——矢量数据符号化② 目录 数据符号化——矢量数据符号化② 3.统计符号设置4.组合符号设置 3.统计符号设置 在 ArcMap 中可以使用符号系统来设置和定制地图元素的样式、颜色和标注。其中&#xff0c;统计符号可以用于表示一个或多个统计值的分布情况和趋势。 这是…

Python中的for循环语句及其应用举例(等差数列求和、阶乘、寻找最大值)

Python中的for循环语句及其应用举例(等差数列求和、阶乘、寻找最大值) 在学习任何编程语言的时候&#xff0c;不熟悉判断选择结构和循环结构&#xff0c;就难以发挥计算机优秀的计算能力和提高学习工作效率。本文将重点讲解Python中的for循环语句&#xff0c;并举例等差数列求…

1 Prometheus-监控简介

目录 1 什么是监控 1.1 技术作为客户 1.2 业务作为客户 2. 监控基础知识 2.1 事后监控 2.2 机械式/模板式/无脑式监控 2.3 不够准确的监控 2.4 静态监控 2.5 不频繁的监控 2.6 缺少自动化或操作繁琐/不便 2.7 监控模式总结 3.监控机制 3.1 探针和内省 3.2 拉取和推…

Java 构造方法

在Java中&#xff0c;构造方法是一种特殊的方法&#xff0c;用于创建和初始化对象。每个类都可以定义一个或多个构造方法&#xff0c;用于初始化对象的属性值。在本文中&#xff0c;我们将深入探讨Java构造方法的使用和实现。 构造方法的基本概念 构造方法是一种特殊的方法&a…

React修改Antd组件的样式

修改默认的antd组件&#xff0c;需要使用global import React, { useState, useEffect } from react; import { Tabs, Rate, Steps } from antd; import styles from ./index.less;const Index (props) >{return (<div className{styles.class_steps}><Stepsprog…

青大数据结构【2018】【算法设计】

关键词&#xff1a; 单链表递增、树的先序遍历 1&#xff09;带头结点的单链表L&#xff0c;从首结点开始&#xff0c;依次两两比较&#xff0c;如果前者大于等于后者&#xff0c;说明是非递增的&#xff1b;否则递增。 2&#xff09; 1&#xff09;先遍历二叉树&#xff0c;…