题目:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (1,2,3,4,5,6,7) 中,按结点数值大小值为4的节点位置。
总结二叉树的中序遍历的迭代实现。
分析:
633390406.jpg
解法:
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(!pRoot||k<=0) return nullptr;
TreeNode* cur = pRoot,res = nullptr;
stack<TreeNode> s;
while(cur||!s.empty()) {
while(cur) {
s.push(cur);
cur = cur->left;
}
cur = s.top();
s.pop();
--k;
if(0==k) return cur;
cur = cur->right;
}
return res;
}
};
网友评论