求二叉搜索树的第k个节点
来源:互联网 发布:留学中介机构 知乎 编辑:程序博客网 时间:2024/05/23 19:00
本题源自剑指offer
-----------------------------------------------------------------------------
用中序遍历二叉搜索树得到有序数列,即可得到第k个数
递归:
TreeNode* KthNode(TreeNode* pRoot, int k) { if(pRoot==NULL || k==0) return NULL; return KthNodeCore(pRoot,k); } TreeNode* KthNodeCore(TreeNode* root,int& k){ TreeNode* target=NULL; if(root->left!=NULL){ target=KthNodeCore(root->left,k); } if(target==NULL){ if(k==1) target=root; k--; } if(target==NULL&&root->right!=NULL){ target=KthNodeCore(root->right,k); } return target; }
非递归:
TreeNode* KthNode(TreeNode* pRoot, int k) { if(pRoot==NULL || k==0) return NULL; stack<TreeNode*> treeStack; TreeNode* result=NULL; int count=0; TreeNode* p=pRoot; while(p!=NULL || !treeStack.empty()){ while(p!=NULL){ treeStack.push(p); p=p->left; } TreeNode* q=treeStack.top(); treeStack.pop(); count++; if(count==k){ result=q; } p=q->right; } return result; }
阅读全文
0 0
- 求二叉搜索树的第k个节点
- 二叉搜索树的第k个节点
- 二叉搜索树的第k个节点
- 二叉搜索树的第K个节点
- 二叉搜索树的第k个节点
- 剑指offer-二叉搜索树的第K个节点
- 二叉搜索树的第K个节点
- 二叉搜索树的第K个节点
- Python:二叉搜索树的第k个节点
- 剑指offer63二叉搜索树的第k个节点
- 剑指offer_二叉搜索树的第k个节点
- 二叉搜索树的第k个节点
- 二叉搜索树的第K个节点
- 【算法】求二叉搜索树的第K个结点
- 求二叉搜索树中第k个节点
- 二叉搜索书的第K个节点
- C++算法之 求二叉树第k层的节点的个树
- 剑指offer系列之六十一:二叉树搜索树的第k个节点
- 【每日一道算法题】
- 【每日一道Linux题】
- json-server深入探秘
- FFMPEG中的结构体
- 执行时间超时用这个。
- 求二叉搜索树的第k个节点
- HTTP HTTPS-培训总结
- 百度高级搜(使用技巧)
- gin使用gzip压缩
- java中方法的定义
- 【设计模式123】工厂模式
- 【每天一道Linux命令】
- 【每天一道算法题】
- leetcode Count Primes 素数个数