public int kthSmallest(TreeNode root, int k) {
int i = 1;
Stack<TreeNode> stack = new Stack<>();
TreeNode node = root;
while (!stack.isEmpty()||node!=null){
while (node!=null){
stack.push(node);
node = node.left;
}
node = stack.pop();
if (i==k) return node.val;
i++;
node = node.right;
}
return -1;
}
思路:在中序遍历迭代方案的基础上进行改进:
- 在访问元素处进行判断,并计数
- 当i==k,即当前为树的第K个元素时,返回当前节点的值