题目
分析
二叉搜索树的前序遍历刚好是节点值从小到大的排序。所以先使用前序遍历,然后输出第k个节点。
前序遍历的过程为:
维护一个栈和一个数组一个指向节点的指针
- 1,从根开始,指针向左子树方向深入不断把节点压入栈中
- 2,如果栈不为空,那么取出栈顶的节点,放入数组中,并且指针指向它的右子树。
python代码
class Solution:
# 返回对应节点TreeNode
def KthNode(self, pRoot, k):
# write code here
root = pRoot
if k == 0: return None
stack = []
res = []
while (root!=None or len(stack)!=0):
while(root):
stack.append(root)
root = root.left
if(len(stack)!=0):
t = stack.pop(-1)
res.append(t)
root = t.right
return res[k-1] if k<=len(res) else None