二叉树后继节点

本文探讨了二叉树中后继节点的三种情况:(1)右子树最左节点;(2)无右子树且为父节点左孩子,父节点为后继;(3)无右子树且为父节点右孩子,需查找左子树的后继节点。
摘要由CSDN通过智能技术生成

二叉树后继节点,中序遍历的后一个节点
(1)有右子树,右子树的最左节点是后继
(2)无右子树,并且是父节点的左孩子,父节点为后继
(3)无右子树,并且是父节点的右孩子,查该节点是哪个节点左子树的最后节点
(一直往上找,找到一个节点是父节点的左孩子,则该父节点为后继节点)

class Node():
    def __init__(self,item):
        self.elem=item
        self.lchild=None
        self.rchild=None
        self.parent=None
def getSuccessorNode(node):
    if node == None:
        return node
    if node.rchild != None:   #没有右子树
        return getleftMost(node.rchild)
    else:                             #有右子树
        parent = node.parent
        while parent != None and parent.lchild != node:  #(3)
            node = parent
            parent = node.parent
        return parent
def getleftMost( node):  # 找最左节点
    if node == None:
        return node
    while node.lchild != None:
        no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值