美文网首页随笔
Leetcode 783. 二叉搜索树结点最小距离

Leetcode 783. 二叉搜索树结点最小距离

作者: zhipingChen | 来源:发表于2019-05-28 11:22 被阅读0次

    题目描述

    给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。

    解法

    二叉搜索树属于有序树结构,一个可以利用的特点就是中序遍历可以得到有序数组,得到有序数组后遍历一次即可得到两节点最小差值。

    这里不申请数组空间来保存树节点,使用两个指针分别指向上一个节点值和最小差值,中序遍历二叉树即可得到最小差值。

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def minDiffInBST(self, root: TreeNode) -> int:
            self.lastVal,self.ret=None,None
            def inOrderTraversal(node):
                if node:
                    inOrderTraversal(node.left)
                    if self.ret!=None:
                        self.ret=min(self.ret,node.val-self.lastVal)
                    elif self.lastVal!=None:
                        self.ret=node.val-self.lastVal
                    self.lastVal=node.val
                    inOrderTraversal(node.right)
            inOrderTraversal(root)
            return self.ret
    

    相关文章

      网友评论

        本文标题:Leetcode 783. 二叉搜索树结点最小距离

        本文链接:https://www.haomeiwen.com/subject/iqurtctx.html