【LeetCode - 285】二叉搜索树中的顺序后继

news/2024/11/7 17:54:13/

文章目录

  • 1、题目描述
  • 2、解题思路
  • 3、解题代码

1、题目描述

在这里插入图片描述

2、解题思路

  顺序后继就是中序遍历的下一个节点。

  1、如果节点 p 有右子树,那么,p 的顺序后继就在右子树的最左侧。

  2、如果节点 p 没有右子树,那么 p 的顺序后继在它的祖宗节点当中,需要从根节点进行先序遍历,记录上一个节点。

  当遍历到某一个节点时,它的上一个节点就是 p,那么当前节点就是 p 的后继节点。

3、解题代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {// 存在右子节点,则目标在右子树的最左侧TreeNode index = p;if (index.right != null) {index = index.right;while (index.left != null) {index = index.left;}return index;}int inorder = Integer.MIN_VALUE;Stack<TreeNode> stack = new Stack<>();// 不存在右子节点,则目标在祖宗节点当中while (!stack.isEmpty() || root != null) {// 1. go left till you canwhile (root != null) {stack.push(root);root = root.left;}// 2. all logic around the noderoot = stack.pop();// if the previous node was equal to p// then the current node is its successorif (inorder == p.val) return root;inorder = root.val;// 3. go one step rightroot = root.right;}return null;}
}

http://www.ppmy.cn/news/663418.html

相关文章

UCB CS285课程笔记目录

本系列文章给自己挖坑 将会总结神课CS285强化学习课程的内容&#xff08;不想完全照抄课程原始内容&#xff0c;还会记录一些自己在学习、复习过程中的一些心得体会&#xff0c;比如看reference readings&#xff09;&#xff0c;除此之外每一节还会分析github上提供的作业答案…

python语句的输出结果_下列 Python 语句的输出结果是 。 print( 数量 {0}, 单价 {1} .format(100,285.6)) print(str.format( 数量...

【单选题】下列表达式的值为True的是( )。 【简答题】下列 Python 语句的运行结果为 。 x= True y= False z= True if not x or y:print(1) elif not x or not y and z:print(2) elif not x or y or not y and x:print(3) else:print(4) 【单选题】在 Python 中,正确的赋值语句…

完成基于ICX285和ICX205两种CCD的兼容性电路设计

设计主要实现了ICX285和ICX205两种CCD公用一块电路驱动板的问题。 众所周知&#xff0c;不同型号的CCD&#xff0c;由于其管教定义、接口时序都不同&#xff0c;因此驱动部分都不一样&#xff0c;很难做到公用一套电路板&#xff0c;但是ICX285和ICX205两款CCD有很多共性&#…

西门子1200控制V90伺服,西门子1200通过PN通讯控制V90伺服,程序控制采用FB285功能块

西门子1200控制V90伺服&#xff0c;西门子1200通过PN通讯控制V90伺服&#xff0c;程序控制采用FB285功能块&#xff0c;该项目采用中文注释&#xff0c;注释详细&#xff0c;还包括与多台G120 PN通讯控制非常适合大家学习与使用。 支持博图14及以上版本&#xff0c;实际应用案例…

【LeetCode 二叉树专项】二叉搜索树中的中序后继(285)

文章目录 1. 题目1.1 示例1.2 说明1.3 限制 2. 解法一&#xff08;递归中序遍历&#xff09;2.1 分析2.2 实现2.3 复杂度 3. 解法二&#xff08;迭代中序遍历&#xff09;3.1 分析3.2 实现3.3 复杂度 1. 题目 给定一棵二叉搜索树和其中的一个节点 p &#xff0c;找到该节点在树…

285. 二叉搜索树中的中序后继

285. 二叉搜索树中的中序后继&#xff1a; 题目链接 &#xff1a;285. 二叉搜索树中的中序后继 题目&#xff1a; 给定一棵二叉搜索树和其中的一个节点 p &#xff0c;找到该节点在树中的中序后继。如果节点没有中序后继&#xff0c;请返回 null 。 节点 p 的后继是值比 p.va…

python输出结果的个数_下列Python语句的输出结果是 print(数量{0},单价{1}.format(100,285.6)) print(str.format(数量{0},单价{1:3...

【简答题】How can a lack of critical thinking cause a loss of personal freedom? 【多选题】Python中内置的4种数据类型为 ____________________________________, 【简答题】下列Python语句的运行结果是 x=False; y=True; z=False if x or y and z: print("yes"…

LeetCode 285. 二叉搜索树中的中序后继

具体思路&#xff1a; 直接遍历找pre->valroot->val的情况&#xff1b; 具体代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), …