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