使用morris遍历记录一下所有的节点
提交代码
class Solution {
public int kthSmallest(TreeNode root, int k) {
TreeNode cur=root,next=root;
ArrayList<Integer> values=new ArrayList<>();
while(cur!=null) {
if(cur.left==null) {
values.add(cur.val);
cur=cur.right;
}else {
next=cur.left;
while(next.right!=null&&next.right!=cur)
next=next.right;
if(next.right==null) {
next.right=cur;
cur=cur.left;
}else {
values.add(cur.val);
cur=cur.right;
next.right=null;
}
}
}
return values.get(k-1);
}
}
运行结果

本文介绍了一种使用Morris遍历算法在二叉搜索树中寻找第K小元素的方法。通过巧妙地利用树的结构,Morris遍历能够在不使用额外空间的情况下遍历所有节点,并记录下节点值。最后返回记录列表中的第K个元素。
839

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



