给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
中序,root不压栈、设为c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
class Solution { public: TreeNode* KthNode(TreeNode* pRoot, int k) { TreeNode *c = pRoot; stack<TreeNode*> s; while (c != nullptr || s.size() > 0) { while (c != nullptr) { s.push(c); c = c->left; } c = s.top(); s.pop(); k--; if (k == 0) { return c; } c = c->right; } return nullptr; } };
|