剑指 Offer II 053. 二叉搜索树中的中序后继:
题目链接 :剑指 Offer II 053. 二叉搜索树中的中序后继
题目:
给定一棵二叉搜索树和其中的一个节点 p ,找到该节点在树中的中序后继。如果节点没有中序后继,请返回 null 。
节点 p 的后继是值比 p.val 大的节点中键值最小的节点,即按中序遍历的顺序节点 p 的下一个节点。
思路:
1、DFS
(1)从根节点开始遍历
(2)分别在左子树和右子树进行搜索
(3)找到第一个大于节点元素的节点
AC代码:
/**
* 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 big=null;
while(root!=null)
{
if(root.val>p.val)
{
big=root;
root=root.left;
}else{
root=root.right;
}
}
return big;
}
}