思路
使用morris中序遍历,遍历到第k个节点时就是第k小的数。
提交代码:
class Solution {
public int kthSmallest(TreeNode root, int k) {
TreeNode p1=root,p2=root;
int cnt=0;
while(p1!=null) {
if(p1.left!=null) {
p2=p1.left;
while(p2.right!=null&&p2.right!=p1)
p2=p2.right;
if(p2.right==null) {
p2.right=p1;
p1=p1.left;
}else {
p2.right=null;
cnt++;
if(cnt==k) return p1.val;
p1=p1.right;
}
}else {
cnt++;
if(cnt==k) return p1.val;
p1=p1.right;
}
}
return root.val;
}
}
运行结果

博客介绍了求第k小的数的思路,即使用morris中序遍历,当遍历到第k个节点时,该节点的值就是所求的第k小的数。还提及了提交代码和运行结果,但未给出具体内容。
649

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



