230. 二叉搜索树中第K小的元素




方法一:BFS模板的应用。

总结的DFS、BFS模板参考:https://www.cnblogs.com/panweiwei/p/13065661.html

class Solution(object):
    # BFS
    def kthSmallest(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        if not root:
            return
        res = []
        stack = [root]
        while stack:
            sizestack = len(stack)
            for i in range(sizestack):
                node = stack.pop(0)
                res.append(node.val)
                if node.left:
                    stack.append(node.left)
                if node.right:
                    stack.append(node.right)
        res.sort()
        return res[k - 1]

方法二:DFS模板的应用。

class Solution(object):
    # DFS
    def kthSmallest(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        if not root:
            return
        res = self.mid_DFS(root)
        return res[k - 1]

    def mid_DFS(self, root):
        if not root:
            return []
        res = []
        res += self.mid_DFS(root.left)
        res.append(root.val)
        res += self.mid_DFS(root.right)
        return res
原文地址:https://www.cnblogs.com/panweiwei/p/13661581.html