1. 题目

设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。

如果指定节点没有对应的“下一个”节点,则返回null。

示例 1:
输入: root = [2,1,3], p = 12/ \
1   3输出: 2示例 2:
输入: root = [5,3,6,2,4,null,null,1], p = 65/ \3   6/ \2   4/
1输出: null

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/successor-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 循环写法,中序遍历即可
class Solution {public:TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {if(!root || !p)return NULL;stack<TreeNode*> stk;TreeNode *tp;bool found = false;while(root || !stk.empty()){while(root){stk.push(root);root = root->left;}tp = stk.top();stk.pop();if(found)return tp;if(tp == p)found = true;root = tp->right;}return NULL;}
};

程序员面试金典 - 面试题 04.06. 后继者(循环中序遍历)相关推荐

  1. 程序员面试金典面试题 01.06. 字符串压缩

    前言 本系列文章为<程序员面试金典>刷题笔记. 题目位置:字符串压缩 题集:程序员面试金典 题目 字符串压缩.利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能.比如,字符串a ...

  2. 程序员面试金典 - 面试题 17.06. 2出现的次数(找递推规律)

    1. 题目 编写一个方法,计算从 0 到 n (含 n) 中数字 2 出现的次数. 示例: 输入: 25 输出: 9 解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 ...

  3. 程序员面试金典 - 面试题 04.09. 二叉搜索树序列(双端队列+回溯)**

    1. 题目 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树. 给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组. 示例: 给定如下二叉树2/ \1 3 返回: ...

  4. 程序员面试金典 - 面试题 16.06. 最小差(排序+双指针)

    1. 题目 给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差 示例: 输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, ...

  5. 程序员面试金典 - 面试题 04.12. 求和路径(二叉树递归)

    1. 题目 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负). 设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量. 注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但 ...

  6. 程序员面试金典 - 面试题 04.10. 检查子树(双重递归)

    1. 题目 检查子树.你有两棵非常大的二叉树:T1,有几万个节点:T2,有几万个节点. 设计一个算法,判断 T2 是否为 T1 的子树. 如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 ...

  7. 程序员面试金典 - 面试题 05.06. 整数转换(位运算)

    1. 题目 整数转换.编写一个函数,确定需要改变几个位才能将整数A转成整数B. 示例1:输入:A = 29 (或者0b11101), B = 15(或者0b01111)输出:2示例2:输入:A = 1 ...

  8. 程序员面试金典 - 面试题 04.05. 合法二叉搜索树(中序遍历)

    1. 题目 实现一个函数,检查一棵二叉树是否为二叉搜索树. 示例 1: 输入:2/ \1 3 输出: true示例 2: 输入:5/ \1 4/ \3 6 输出: false 解释: 输入为: [5, ...

  9. 程序员面试金典 - 面试题 04.04. 检查平衡性(二叉树高度)

    1. 题目 实现一个函数,检查二叉树是否平衡.在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1. 示例 1: 给定二叉树 [3,9,20,null,null,15,7]3/ ...

最新文章

  1. windows node.js 安装
  2. 三国志战略版360区S4服务器合并信息,三国志战略版S2赛季合区须知,季转服功能介绍...
  3. python socket传输图片_python使用socket传输图片视频等文件的实现方式
  4. c语言自定义一个函数求商和余数,c – 如何在一个步骤中获得商和余数?
  5. 判断大小_美人计 | 学会这招大小骨架判断法,我知道自己不是胖了
  6. leetcode 53 python 动态规划
  7. 2016.01.18 UILabel
  8. #219. 【NOI2016】优秀的拆分
  9. 常用的SEO工具都有哪些呢?5个SEO必备优化工具推荐
  10. 大数据软件在高校领域的应用探索—智慧高校解决方案分享
  11. 2020计算机二级office激活码,2020计算机二级office v3.5.2
  12. ONL/Debian 和 Ubuntu 版本的对应关系
  13. 聊聊我的2021,总结与展望
  14. MapGIS名词解释
  15. 手机端 js禁止页面滚动
  16. 电路维修知识-可控硅
  17. python教程57--使用D-tale做透视表并生成图形
  18. Visitor(访问者)设计模式
  19. python websocket 断线自动重连
  20. 也谈ibm aix jfs2

热门文章

  1. iOS 加载本地html文件详细操作
  2. php基本函数对象,PHP常用函数对象_PHP教程
  3. 数据有序_Redis实战(3)-数据结构List实战一之商品信息的有序存储
  4. C++远航之封装篇——深拷贝、浅拷贝
  5. 以下题目需要当场编写实现,,答案自己写
  6. $JavaScript(3)
  7. 简单的FreeBSD 的内核编译
  8. RBAC 基于角色的访问控制
  9. BZOJ 4259: 残缺的字符串 [FFT]
  10. 无状态会话bean(1)---定义