首页 > 其他分享 >2022-8-16 剑指offer-二叉树

2022-8-16 剑指offer-二叉树

时间:2022-08-16 13:14:28浏览次数:79  
标签:TreeNode val offer 二叉树 2022 return null root 节点

剑指 Offer II 053. 二叉搜索树中的中序后继

难度中等

给定一棵二叉搜索树和其中的一个节点 p ,找到该节点在树中的中序后继。如果节点没有中序后继,请返回 null 。

节点 p 的后继是值比 p.val 大的节点中键值最小的节点,即按中序遍历的顺序节点 p 的下一个节点。

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 class Solution {
11     ArrayDeque<TreeNode> stack;
12     public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
13         stack=new ArrayDeque<>();
14         return dfs(root,p);
15     }
16 
17     public TreeNode dfs(TreeNode root,TreeNode p){
18         // for (TreeNode x:stack){
19         //     System.out.print(x.val+" ");
20         // }
21         if (root==null) return null;
22         if (root.val==p.val){
23             if (root.right!=null){
24                 TreeNode node=root.right;
25                 while (node.left!=null) node=node.left;
26                 return node;
27             }
28             while (!stack.isEmpty()){
29                 TreeNode t=stack.pop();
30                 if (t!=null&&t.val>p.val) return t;
31             }
32             return null;
33         }else if (root.val>p.val){
34             stack.push(root);
35             return dfs(root.left,p);
36         }else{
37             stack.push(root);
38             return dfs(root.right,p);
39         }
40     }
41 }

思路:记录当前节点和前继节点,中序遍历,或者利用搜索树的性质。

标签:TreeNode,val,offer,二叉树,2022,return,null,root,节点
From: https://www.cnblogs.com/benbicao/p/16591191.html

相关文章

  • 2022年“研究生科研素养提升”系列公益讲座 测试答案
    一、单选题1、在科研研究的伦理原则中,科技工作者应该坚持科学研究的客观性,杜绝蓄意的捏造、作假和对研究成果的曲解,指的是()诚信原则责任原则公平原则审慎原则您的答......
  • python写入txt 和python写入csv 202208
     ##写入csvdic=[1,2,3,4,5]# # file = open('21.txt', mode='w',encoding='UTF-8')# # file.write(dic)# # # 关闭文件,不关闭文件可能会出问题# # fil......
  • 2022最新有效 哔哩哔哩Bilibili手机端.m4s文件缓存转.mp4教程 支持每个视频单独一个文
    项目地址:https://github.com/kaixinol/BiliCache2MP4下载地址:https://github.com/kaixinol/BiliCache2MP4/releases/https://pan.baidu.com/s/16lcp5HLjkZG8MGN_MhX9gA......
  • 2022-08-16第二小组 张晟源(数据库查询)
    数据库(查询)DQL数据库查询语言DROPTABLEIFEXISTSstudentgoCREATETABLEstudent( idINT(10)PRIMARYKEY, `name`VARCHAR(10), ageINT(10)NOTNULL, gender......
  • 2022-08-15 第六小组 高佳誉 学习笔记
    Mysql数据库数据库数据库【按照数据结构来组织、存储和管理数据的仓库】。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于公司......
  • 20220816 springboot_idea_lombok_转Entity 生成的ToDominObject没有用有参构造方
    1问题:使用lombok,DDD设计思想整合mapStruct时,转Entity生成的ToDominObject没有用有参构造方法构造对象 2解决方案:2.1未解决_原因猜想因为生......
  • 20220815
    现在的你,是十年前你的决定,十年后的你,是现在你的决定。种一棵树,最好是十年前,其次是现在。想要改变,从此刻开始,一切还不晚。星光不问赶路人,时光不负有心人,愿十年后的今天不为......
  • 2022-08-15 第三组 陈迪 学习笔记
    Myspl数据库:数据库:数据库【按照数据结构来组织、存储和管理数据的仓库】。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于......
  • 2022-08-15 第十小组 石晓荟
    MySQL数据库:按照数据结构来组织,存储和管理数据的仓库,是一个长期存储在计算机体内的,有组织可供共享的,统一管理大量数据的集合MySql数据库MySql是一个关系型数据库,是一......
  • 【2022.8.15】MySQL数据库(2)
    今日内容概要字符编码与配置文件数据库存储引擎创建表的完整语法MySQL字段类型MySQL字段约束今日内容详细字符编码与配置文件如何查看数据库基本信息(用户......