装饰网站的业务员都是怎么做的/广东seo推广
面试题–【剑指Offer】 题目解答
题目要求
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解题思路
这里边有一个我们需要的知识:
二叉搜索树按照中序遍历的结果就是一个递增的序列形式。
所以根据这个知识,我们只要按照中序遍历的思想,设置一个计数器就可以顺利的找到第k个小的节点了,这里有个大坑,就是返回的是节点!!!!不是节点的值,如果是节点的值那么直接中序遍历,然后输出第K个元素即可,这样好像更好理解一点。但是本题需要的是节点,所以我们需要一个计数器来告诉我们现在到了第几个节点,到第k个的时候就返回。
主要代码c++
class Solution {
public:int count = 0; // 计数器TreeNode* KthNode(TreeNode* pRoot, int k){if(pRoot){// 中序遍历的思想,只是需要节点而不是节点的值。TreeNode* tmp = KthNode(pRoot->left, k);if(tmp) return tmp;count = count + 1;if(count==k) return pRoot;tmp = KthNode(pRoot->right,k);if(tmp) return tmp;}return nullptr;}
};