C++ 二叉搜索树的第k个节点

    //整体是二叉树的中序遍历,加入计数后即可找出第k个节点
    int KthNode(TreeNode* proot, int k) 
    {
        stack<TreeNode*> stk;
        TreeNode * p = proot;
        int num = 0;//计数器
        while (p || !stk.empty())//中序遍历
        {
            while (p)
            {
                stk.push(p);
                p = p->left;
            }
            if (!stk.empty())
            {
                p = stk.top();
                stk.pop();
                //计数器num,每访问一个节点+1,当num == k时,返回其值即为答案
                if (++num == k) return p->val;
                p = p->right;
            }
        }
        return -1;
    }

 

posted @ 2021-11-26 11:00  mshentai  阅读(47)  评论(0编辑  收藏  举报