[leetcode]Inorder Successor in BST

你。 提交于 2020-02-01 18:15:04

简单的利用递归来做

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    
    def inorderTraverse(self, node: 'TreeNode', p: 'TreeNode', prev: ['TreeNode'], result: ['TreeNode']) -> 'TreeNode':
        if not node:
            return
        if result[0]:
            return
        
        if node.left:
            self.inorderTraverse(node.left, p, prev, result)
            
        if prev[0] and prev[0].val == p.val:
            result[0] = node
        prev[0] = node
        
        if node.right:
            self.inorderTraverse(node.right, p, prev, result)
        
        
    def inorderSuccessor(self, root: 'TreeNode', p: 'TreeNode') -> 'TreeNode':
        prev = [None]
        result = [None]
        self.inorderTraverse(root, p, prev, result)
        return result[0]

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!