利用深度优先搜索,利用二叉搜索树的性质,我们用中序遍历的结果就是排序好的一个节点的列表,取出第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):
if k <= 0:
return
res = []
self.dfs(pRoot, res)
if k > len(res):
return
return res[k-1]
def dfs(self, root, res):
if not root:
return
elif root.left == None:
res.append(root)
self.dfs(root.right, res)
else:
self.dfs(root.left, res)
res.append(root)
self.dfs(root.right, res)