[Cracking the Coding Interview] 4.6 Successor 后继节点

Write an algorithm to find the 'next' node(i.e. in-order successor) of a given node in a binary search tree.

 

这道题让我们寻找给定节点的中序后继节点,最简单的方法就是中序遍历tree, 并用一个prev指向当前的节点的前面的节点,如果prev等于等于给定节点,当前节点就是所求。见如下代码:

def inorder_successor(root, node)
  $prev = nil
  $succ = nil
  
  inorder(root, node)
  $succ
end

def inorder(root, p)
  return if root.nil?
  
  inorder(root.left, p)
  
  if $prev == p
    $succ = root
  end
  
  $prev = root
  inorder(root.right, p) 
end

 

转载于:https://www.cnblogs.com/infinitycoder/p/9194401.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值