二叉树的下一个节点——jzoffer

2018-12-06  本文已影响0人  二十岁的弹簧

题目:给定一个二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左、右节点的指针,还有一个指向父节点的指针。

'''
class TreeNode:
    def __init__(self, val)
        self.val = val
        self.left = None
        self.right = None
        self.parent = None
'''
class Solution:
    def get_next(self, node):
        if not node:
            return False
        next_node = None
        if node.right:
            ret = node.right
            while ret.left:
                ret = ret.left
            next_node = ret
        elif node.parent:
            '''
             _parent = node.parent
            if _parent.left and _parent.left == node:
                next_node = _parent
            else:
                while _parent.parent:
                    _parent = _parent.parent           
            '''
            p_current = node
            p_parent = node.parent
            while p_parent and p_current == p_parent.right:
                p_current = p_parent
                p_parent = p_parent.parent
            next_node = p_parent
        return next_node

            
                    
                    
上一篇 下一篇

猜你喜欢

热点阅读