首页 > 其他分享 >day19

day19

时间:2023-02-03 00:56:11浏览次数:33  
标签:right TreeNode val return root day19 left

1、654 最大二叉树

class Solution {
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        return traversal(nums, 0, nums.length);
    }

    public TreeNode traversal(int[] nums, int left, int right){//左闭右开
        if(left >= right){
            return null;
        }

        int maxIndex = left;
        for(int i=left+1; i<right; i++){
            if(nums[i] > nums[maxIndex]){
                maxIndex = i;
            }
        } 

        TreeNode root = new TreeNode(nums[maxIndex]);
        root.left = traversal(nums, left, maxIndex);
        root.right = traversal(nums, maxIndex+1, right);

        return root;
    }
}

2、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;
    }
}

3、700 二叉搜索树中的搜索

  1. 递归

    class Solution {
        public TreeNode searchBST(TreeNode root, int val) {
            if(root == null || root.val == val){
                return root;
            }
    
            if(root.val > val){
                return searchBST(root.left, val);
            }
    
            if(root.val < val){
                return searchBST(root.right, val);
            }
    
            return null;
    
  2. 迭代

    class Solution {
        public TreeNode searchBST(TreeNode root, int val) {
            while(root != null){
                if(val < root.val){
                    root = root.left;
                } else if(val > root.val){
                    root = root.right;
                } else {
                    return root;
                }
            }
            return root;
        }
    }
    
    

4、98 验证二叉搜索树

class Solution {
    long preVal = Long.MIN_VALUE;

    public boolean isValidBST(TreeNode root) {
        if(root == null){
            return true;
        }

        // 访问左子树
        if(!isValidBST(root.left)){
            return false;
        }

        // 访问当前节点:如果当前节点小于等于中序遍历的前一个节点,说明不满足BST,返回 false;否则继续遍历。
        if(root.val <= preVal){
            return false;
        }
        preVal = root.val;

        // 访问右子树
        return isValidBST(root.right);
    }
}

标签:right,TreeNode,val,return,root,day19,left
From: https://www.cnblogs.com/hzj-bolg/p/17087852.html

相关文章

  • Day19 - 正则表达式
    正则表达式的概述正则表达式的介绍在实际开发过程中经常会有查找符合某些复杂规则的字符串的需要,比如:邮箱、图片地址、手机号码等,这时候想匹配或者查找符合某些规则的......
  • day19IO流
    1.File类1.1File类概述和构造方法【应用】File类介绍它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正......
  • Day19_06_Vue教程之Vue实例的生命周期
    Vue教程之Vue实例的生命周期一.什么是生命周期Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载DOM、渲染→更新→渲染、卸载等一系列过程,我们......
  • 指针详解(day19)
    5.函数指针释义:指向函数的指针。函数指针的创建实例intAdd(intx,inty){intz;z=x+y;returnz;}intmain(){inta=1;intb=2;printf("\n%d\n",Add(a,......
  • day19 --> (Filter过滤器、Listener监听器)
    Filter:过滤器【JavaWeb三大组件之一:Servlet、Filter、Listener】1、概念生活中的过滤器:净水器,空气净化器,土匪web中的过滤器:当访问服务器的资源时,过滤器可以将请求栏目......
  • Day19:属性封装详解
    属性封装详解封装即隐藏一些数据,让外部不能直接访问,而是需要通过一些方法才能设置或者访问。首先我们来看未封装的属性被外部调用的情况publicclassStudents{//创建一......
  • day19
    【0027.移除元素】classSolution{public:intremoveElement(vector<int>&nums,intval){intfast=0;intslow=0;for(intfa......
  • day19
    jdk5新特性自动装箱自动拆箱:只有在+-*/运算符号下才会进行。Integer常用method手动装拆Integerx=newInteger(1000);floatf=x.floatValue();......
  • 牛客java选择题每日打卡Day19
    牛客java选择题每日打卡Day19......
  • 代码随想录Day19
    LeetCode101对称二叉树  思路:判断二叉树是否是对称二叉树,我首先想到的是层序遍历,然后取每层的值进行判断是否是回文。但是这种做法是错误的,不能只在意值上面的回文,......