首页 > 编程语言 >代码随想录算法训练营第二十天|654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树

代码随想录算法训练营第二十天|654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树

时间:2024-01-01 18:33:08浏览次数:47  
标签:结点 return val root 二叉 搜索 二叉树 null root1

一、654.最大二叉树

题目链接:

LeetCode 654.最大二叉树

学习:

思路:

前序遍历

  • 方法参数:(int[] nums, int start, int end)

  • 返回类型:TreeNode

  • 终止条件:

    if(end-start==0) return null;
    if(end-start==1) return new TreeNode(nums[start]);
    
  • 单层递归逻辑:

    1. 寻找数组中的最大值,确定根结点,下标为index
    2. 对nums数组进行切割,找到左子树的范围和右子树的范围,左闭右开
    3. 递归调用分别返回左孩子和右孩子

二、617.合并二叉树

题目链接:

LeetCode 617.合并二叉树

学习前:

思路:

  • 递归:

    • 方法参数:(TreeNode root1, TreeNode root2)
    • 返回类型:TreeNode
    • 终止条件:3种结点为空的情况
    • 单层递归逻辑:
      1. 此时root1和root2均为非空,故根结点的值相加作为新的根结点
      2. 递归调用分别返回左孩子和右孩子
  • 迭代(栈):

    1. 首先为空判断
    if(root1==null) return root2;
    if(root2==null) return root1;
    if(root1==null) return root2;
    else if(root1!=null && root2==null) return root1; 
    
    1. 此时root1和root2均为非空,入栈值相加,当左右孩子均不为空时,依次入栈
    2. 返回root1

学习后:

优化了判空条件

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

三、700.二叉搜索树中的搜索

题目链接:

LeetCode 700.二叉搜索树中的搜索

学习前:

思路:

  • 递归:

    • 方法参数:(TreeNode root, int val)

    • 返回类型:TreeNode

    • 终止条件:if(rootnull || root.valval)return root;

    • 单层递归逻辑:

      val大于当前结点值,返回右子树;val小于当前结点值,返回左子树;val等于当前结点值,返回该结点

  • 迭代(栈):

    1. 首先为空判断if(root!=null) stack.push(root);

    2. 栈不为空的循环,pop当前节点,若val大于当前结点值却右孩子不为空,右孩子入栈;若val小于当前结点值且左孩子不为空,左孩子入栈;val等于当前结点值,返回该结点

    3. 返回null

学习后:

二叉搜索树的特性使得迭代法可以不用额外辅助空间,直接用root进行移动

四、98.验证二叉搜索树

题目链接:

LeetCode 98.验证二叉搜索树

学习后:

思路: 中序遍历

  • 递归:

    • 方法参数:(TreeNode root)

    • 返回类型:boolean

    • 终止条件:if(rootnull || root.valval)return root;

    • 单层递归逻辑:

      1. 左:递归调用

      2. 中:需要一个pre记录前序结点,并且与左子树进行比较

        if(pre!=null && root.val<=pre.val) return false;
        pre=root;
        
      3. 右:递归调用

  • 迭代(栈):

    1. 需要一个pre记录前序结点。在中序遍历迭代方式中,对中的操作修改为

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

五、学习总结

  1. 时间:3h
  2. 二叉搜索树的验证需要采用中序遍历,且要保证左子树的所有结点值小于中结点,且右子树的所有结点值大于根结点

标签:结点,return,val,root,二叉,搜索,二叉树,null,root1
From: https://www.cnblogs.com/amulet/p/17938951

相关文章

  • 代码随想录算法训练营第十八天 | 513.找树左下角的值,112. 路径总和,113.路径总和ii,106.
    一、513.找树左下角的值题目链接:LeetCode513.找树左下角的值学习前:思路:层序遍历。采用递归和迭代两种方式递归:定义最大深度和目标值两个成员变量,方法参数是结点和当前结点的深度;返回类型为void;终止条件为结点为空;单次循环内容为判断该节点是否符合目标要求,且分别传入左子......
  • 二叉树的四种遍历-前序、中序、后序、层序
    目录一、易懂的形象理解1、先序遍历2、中序遍历3、后序遍历4、层序遍历二、真正理解三种遍历一、易懂的形象理解其实从名字就可以很好的理解这三种遍历,我在第二点时候说,但是估计能翻到我的文的同学们之前肯定看过好多类似的了,那咱们换个思路~先用我想的一种简单易懂的形象思维......
  • 二叉树遍历(C语言版)
    二叉树遍历先序递归int*res;voidpreorder(structTreeNode*root,int*returnSize){if(root==NULL)return;//根左右res[(*returnSize)++]=root->val;preorder(root->left,returnSize);preorder(root->right,returnSize);}int*pre......
  • 以目标函数变化量作为评价函数的改进禁忌搜索算法
    提出了一种以目标函数变化量作为评价函数的改进禁忌搜索算法,并进行了理论分析,然后将其与有效禁忌搜索算法作了性能比较。通过比较三个公共测试数据集的计算结果,验证了本文提出的禁忌搜索算法的可行性和有效性。 资源文件列表 新建文件夹/fun.m , 227新建文件夹/PSOT.m......
  • 力扣543-二叉树的直径
    难度:【简单】定义:在一个二叉树中,任意两个节点之间的路径中最长的路径的长度称为其直径。路径长度由两个节点之间经过的“边”表示,而不是节点数。且二叉树的直径不一定经过根节点。先大致看了官方解法,不理解,心情暴躁没看懂,就自己瞎写。起初不理解直径不一定经过根节点。根据示......
  • Pinot 的高性能搜索和自然语言处理
    1.背景介绍Pinot是一种高性能的列式数据库,专为OLAP类型的数据处理而设计。它具有高性能的搜索和自然语言处理(NLP)功能,可以用于处理大规模的结构化和非结构化数据。在这篇文章中,我们将深入探讨Pinot的高性能搜索和自然语言处理的核心概念、算法原理、实例代码和未来发展趋势。1.1Pin......
  • 二叉树面试题解析
    二叉树面试题解析判断相同的树/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;}*TreeNode(intval,TreeNode......
  • 深度优先搜索(DFS) 学习、Java代码实现
    深度优先搜索(DFS) 的基本思想:从图中的某个顶点v出发,然后依次从未被访问的v 的邻接点开始深度优先搜索,直至图中所有和 v 路径相通的顶点都被访问,然后选择另外一个没有被访问的顶点开始深度优先搜索。 1. 概述 深度优先搜索(DFS) 的基本思想:从图中的某个顶点v出发,然后依次......
  • 算法学习Day18左下角的值,路径总和,构建二叉树
    #Day18左下角的值,路径总和,构建二叉树`ByHQWQF2023/12/30`##笔记***##513.找树左下角的值给定一个二叉树的**根节点**`root`,请找出该二叉树的 **最底层 最左边**节点的值。假设二叉树中至少有一个节点。**示例2:****输入:**\[1,2,3,4,null,5,6,null,null,7]**......
  • 搜索引擎优化指南:SEO关键字、长尾关键字、短尾关键字以及反向链接
    内容SEOSEO代表“搜索引擎优化”。它是一种数字营销策略,旨在提高网站或网页在搜索引擎未付费结果中的在线可见性。通常,网站在搜索结果页面中排名越高,或在搜索结果列表中显示的频率越高,它将从搜索引擎用户那里获得的访问者就越多。SEO策略可以针对各种类型的搜索,例如图像搜索、......