class Solution {
public:
int kthSmallest(TreeNode* root, int k) {
stack<TreeNode*> st; // 创建一个栈用于存储树节点
while (root != nullptr || !st.empty()) {
// 中序遍历,直到栈为空且当前节点为nullptr
// 将当前节点及其所有左子节点压入栈中
while (root != nullptr) {
st.push(root);
root = root->left;
}
// 弹出栈顶节点(这是当前子树中最小的节点)
root = st.top();
st.pop();
k--; // 处理当前节点,k减1
// 如果k减到0,说明当前节点就是第k小的节点
if (k <= 0)
break;
// 处理当前节点的右子树
root = root->right;
}
// 返回第k小的节点值
return root->val;
}
};
【题解】230. 二叉搜索树中第 K 小的元素 (二叉搜索树、dfs、中序遍历)
猜你喜欢
转载自blog.csdn.net/Colorful___/article/details/141557126
今日推荐
周排行