zoukankan      html  css  js  c++  java
  • [Locked] Inorder Successor in BST

    Inorder Successor in BST

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST.

    Example

    Given tree = [2,1] and node = 1:

      2
     /
    1
    

    return node 2.

    Given tree = [2,1,3] and node = 2:

      2
     / 
    1 3

    return node 3.

    Note

    If the given node has no in-order successor in the tree, return null.

    Challenge

    O(h), where h is the height of the BST.

    分析:

      一般情况下,目标节点的右子节点即为中序下一个节点;如果该目标节点无右子节点,则中序下一个节点为从根节点到搜索目标节点过程中最后一次做出左节点遍历的节点。

    代码:

    TreeNode *successor(TreeNode *root, TreeNode *p) {
        TreeNode *cur = root, *record = NULL;
        while(cur != p) {
            if(p->val < cur->val) {
                record = cur;
                cur = cur->left;
            }
            else
                cur = cur->right;
        }
        return cur->right ? cur->right : record;
    }
  • 相关阅读:
    OpenCV 简介
    无缝滚动
    Date 与 switch的运用
    js object(对象)
    arr.sort()排序方法
    删除
    评分
    延时提示框
    数字相加求和
    自定义右键菜单
  • 原文地址:https://www.cnblogs.com/littletail/p/5216482.html
Copyright © 2011-2022 走看看