二叉搜索树的第k个节点:最直观的想法是,中序遍历二叉搜索树,这样得到的遍历结果是有序的,使用一个变量num表示当前距离第k个节点还剩几个节点,其初始为k,使用一个变量value表示第k个节点值,其初始为-1。在中序遍历的过程中,将num减一,并且判断当前num是否等于0,如果是则返回当前节点对应的值,即value等于cur->val,最后返回value即可。
int num=0; int value=-1; void InOrder(TreeNode* cur) { // 空节点返回 if(cur==nullptr) return; InOrder(cur->left); // 中间节点 num--; if(num==0) value=cur->val; InOrder(cur->right); } int KthNode(TreeNode* proot, int k) { num=k; InOrder(proot); return value; }