@ 剑指offer(python)二叉搜索树的第k个结点

剑指offer刷题笔记62(python)

题目描述

给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。

思路

二叉搜索树的中序遍历序列就是排好序的顺序,因此,将二叉搜索树按照中序遍历顺序打印出来,第k各节点就是这棵二叉搜索树的第k小节点。

代码

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回对应节点TreeNode
    def KthNode(self, pRoot, k):
        # write code here
        result = []
        def midOrder(pRoot):   # 中序遍历函数
            if pRoot == None:
                return None
            midOrder(pRoot.left)
            result.append(pRoot)
            midOrder(pRoot.right)
        midOrder(pRoot)
        return None if k <= 0 or len(result) < k else result[k-1]

你可能感兴趣的:(剑指offer(python))