剑指offer部分题解

62. 二叉搜索树的第 k 个结点

TreeNode* KthNode(TreeNode* pRoot, int k)
{
    // 采用中序遍历这个树,遍历到第k个结点就是答案
    stack<TreeNode*> s;
    int cnt = 0;
    TreeNode* cur = pRoot;
    while(cur || !s.empty()){
        while(cur){
            s.push(cur);
            cur = cur->left;
        }
        // 访问根节点
        cur = s.top();
        s.pop();
        cnt++;
        if(cnt == k)
            return cur;
        cur = cur->right;
    }
    return NULL;
}

猜你喜欢

转载自www.cnblogs.com/hi3254014978/p/12332561.html