面试题70:二叉搜索树第K大的结点*
来源:互联网 发布:万方—中国机构数据库 编辑:程序博客网 时间:2024/06/03 10:35
题目:
给定一棵二叉搜索树,请找出其中的第K大的结点。
思路:
按中序遍历的顺序遍历二叉树,可以找到第K大的结点。
#include <iostream> #include <vector> #include <stack>using namespace std;struct Node{int val;Node *left;Node *right;Node(int _val) :val(_val), left(NULL), right(NULL){}};Node *FindKthNode(Node *root, int &k){if (root == NULL || k == 0) return NULL;Node* target = NULL;if (root->left) target=FindKthNode(root->left, k);if (target == NULL){if (k == 1) target = root;k--;}if (target == NULL && root->right)target = FindKthNode(root->right, k);return target;}int main(){Node *n1 = new Node(5);Node *n2 = new Node(3);Node *n3 = new Node(7);Node *n4 = new Node(2);Node *n5 = new Node(4);Node *n6 = new Node(6);Node *n7 = new Node(8);Node *n8 = new Node(10);n1->left = n2;n1->right = n3;n2->left = n4;n2->right = n5;n3->left = n6;n3->right = n7;n7->right = n8;int k = 9;Node *re = FindKthNode(n1,k);if(re) cout << re->val << endl;return 0;}
0 0
- 面试题70:二叉搜索树第K大的结点*
- 面试题63:二叉搜索树的的第k个结点
- 面试题63:二叉搜索树的第K个结点
- 《剑指Offer》学习笔记--面试题63:二叉搜索树的第k个结点
- 【剑指Offer学习】【面试题63:二叉搜索树的第k个结点】
- 剑指offer-面试题63:二叉搜索树的第K个结点
- 《剑指offer》面试题63 二叉搜索树的第k个结点
- 剑指offer--面试题63:二叉搜索树的第k个结点
- 剑指offer-面试题63-二叉搜索树的第k个结点
- 面试题63:二叉搜索树的第k个结点
- 剑指offer 面试题63 二叉搜索树的第 k 个结点
- 剑指offer面试题63 二叉搜索树的第k个结点
- 【剑指Offer】面试题63:二叉搜索树的第k个结点
- 剑指offer 面试题63 二叉搜索树的第 k 个结点
- 面试题63. 二叉搜索树的第k个结点
- 二叉搜索树的第K大结点
- 剑指offer 面试题63:二叉搜索树的第k个结点(二叉树中序遍历的应用) 题解
- 【二叉树】二叉搜索树的第k个结点
- win7安装office2016报错:无法找到入口
- 56. Merge Intervals
- K60学习笔记三:GPIO口的底层驱动操作带API接口
- 找出字符串中第一个只出现一次的字符
- 第5周项目4:长方柱类
- 面试题70:二叉搜索树第K大的结点*
- 设计模式 概述
- 浏览器兼容笔记(2)
- Oracle常用命令大全
- 山东省第一届ACM大学生程序设计竞赛 Phone Number 字典树
- git命令总结
- js获取Url中参数值
- iOS开发之tableViewCell高度自适应
- C语言经典小程序(热门题型)