【题解】230. 二叉搜索树中第 K 小的元素 (二叉搜索树、dfs、中序遍历)

https://leetcode.cn/problems/kth-smallest-element-in-a-bst/?envType=study-plan-v2&envId=top-100-liked
在这里插入图片描述

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;
    }
};

猜你喜欢

转载自blog.csdn.net/Colorful___/article/details/141557126