题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如{5,3,7,2,4,6,8}中,按结点数值大小顺序第三小结点的值为4。
用例:
输入 | 输出 |
---|---|
{5,3,7,2,4,6,8},3 | 4 |
{5,3,7,2,4,6,8},0 | “null” |
二叉搜索树:
解题思路
python解法,要注意,返回的是节点,而不是节点的值!!!尼玛,被坑了。
- 中序遍历就是一个树从小到大的排列顺序,
- 只需要求出中序遍历到第k个元素就是所需的节点
python 代码
# -*- 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):
self.res=[]
self.dfs(pRoot)
return self.res[k-1] if 0<k<=len(self.res) else None
def dfs(self,root):
if not root:
return
self.dfs(root.left)
self.res.append(root)
self.dfs(root.right)
s = Solution()
res = s.KthNode(pRoot, k)
print('.....',res)