思路
二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。 所以,按照中序遍历的第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, root, k):
# write code here
if not root:return None
self.res = []
self.DFS(root)
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)