题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值从小到大顺序第三小结点的值为4。
分析
二叉搜索树的特点就是对于某个点来说,左子树上的点小于该点,右子树上的点大于该点。所以按照中序遍历的方法得到的序列即是从小到大的序列。
代码
/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;} */function KthNode(r, k){ if(r === null) return null; var res = []; var s = []; var cur = r; while(cur !== null || s.length !== 0) { if(cur !== null){ s.push(cur); cur = cur.left; }else{ cur = s.pop(); res.push(cur); if(res.length === k) return res.pop(); cur = cur.right; } } return null;}