62.二叉搜索树的第k个结点
问题:
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解决:
思想:
二叉树的中序遍历就是其排列顺序,所以我们先构造一个中序遍历的函数,将节点保存到一个list中,最后将第k个节点打印出来。
python代码:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回对应节点TreeNode
def __init__(self):
self.tmp=[]
def KthNode(self, pRoot, k):
# write code here
self.inorder(pRoot)
if k<=0 or len(self.tmp)<k:
return None
else:
return self.tmp[k-1]
def inorder(self,pRoot):
if pRoot:
self.inorder(pRoot.left)
self.tmp.append(pRoot)
self.inorder(pRoot.right)

本文探讨了在二叉搜索树中查找第k小结点的问题,提出通过中序遍历将节点保存到list中,再获取第k个节点的方法。此法巧妙利用了二叉搜索树的特性,确保了节点访问顺序与数值大小一致。

231

被折叠的 条评论
为什么被折叠?



