后继者00

作者 : admin 本文共594个字,预计阅读时间需要2分钟 发布时间: 2024-06-16 共1人阅读

题目链接

后继者

题目描述

后继者00插图

注意点

  • 题目中的树是二叉搜索树
  • 节点p在二叉搜索树中一定存在

解答思路

  • 本题关键是找到值大于节点p的值的第一个节点,因为本题中的树是二叉搜索树,所以左子树的值始终小于根节点,右子树的值始终大于根节点
  • 访问到任意一个节点,当节点值不大于节点p的值,则该节点对应的子树都不可能是结果中的后继者,可以直接去该节点的右子树进行查找;当节点值大于节点p的值,则应该找到该节点对应的子树中的最小值(可能在左子树也可能是它自己),也就是值大于节点p的值的第一个节点

代码

/**
 * 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) {
        if (root == null) {
            return null;
        }
        if (root.val <= p.val) {
            return inorderSuccessor(root.right, p);
        }
        TreeNode res = inorderSuccessor(root.left, p);
        return res == null ? root : res;
    }
}

关键点

  • 找到树中大于节点p的值的第一个节点
本站无任何商业行为
个人在线分享 » 后继者00
E-->