LeetCode-二叉搜索树的第k大节点
二叉搜索树的第k大节点
LeetCode-面试题54
- 需要充分了解二叉搜索树的性质.
- 利用中序遍历的思想,采用相反的思想:先遍历右节点再遍历左节点。
/**
 * 给定一棵二叉搜索树,请找出其中第k大的节点。
 **/
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
// Definition for a binary tree node.
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
/**
输入: root = [5,3,6,2,4,null,null,1], k = 3
       5
      / \
     3   6
    / \
   2   4
  /
 1
输出: 4
**/
class Solution {
private:
    int n=0;
    int result=0;
public:
    void DFS(TreeNode* node,int k){
        if(node->right)
            DFS(node->right,k);
        n++;
        if(n==k)
            result=node->val;
        if(node->left)
            DFS(node->left,k);
    }
    int kthLargest(TreeNode* root, int k) {
        if(root)
            DFS(root,0);
        return result;
    }
};
int main(){
    TreeNode* t1=new TreeNode(5);
    TreeNode* t2=new TreeNode(3);
    TreeNode* t3=new TreeNode(6);
    TreeNode* t4=new TreeNode(2);
    TreeNode* t5=new TreeNode(4);
    TreeNode* t6=new TreeNode(1);
    t4->left=t6;
    t2->left=t4;t2->right=t5;
    t1->left=t2;t1->right=t3;
    Solution solution;
    cout<<solution.kthLargest(t1,3)<<endl;
    system("pause");
    return 0;
}
LeetCode-二叉搜索树的第k大节点的更多相关文章
- 力扣 - 剑指 Offer 54. 二叉搜索树的第k大节点
		题目 剑指 Offer 54. 二叉搜索树的第k大节点 思路1 二叉搜索树的特性就是中序遍历结果为递增序列,而题目要求的是第 k 大节点,所以就应该是要遍历结果为降序, 按照先遍历左子树.输出节点.遍 ... 
- 剑指 Offer 54. 二叉搜索树的第k大节点
		题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 示例1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例2: 输入: root ... 
- 每日一题 - 剑指 Offer 54. 二叉搜索树的第k大节点
		题目信息 时间: 2019-07-04 题目链接:Leetcode tag:二叉搜索树 中序遍历 递归 难易程度:中等 题目描述: 给定一棵二叉搜索树,请找出其中第k大的节点. 示例1: 输入: ro ... 
- 二叉搜索树的第K大节点
		题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点. 分析 对二叉搜索树进行逆向中序遍历(先右再左),则遍历序列是降序排序的,因此中序遍历一颗二叉搜索树,可以很容易的得到它的第k大的节点.使用一个 ... 
- 《剑指offer》面试题54. 二叉搜索树的第k大节点
		问题描述 给定一棵二叉搜索树,请找出其中第k大的节点. 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例 2: 输入: ... 
- 剑指offer——59二叉搜索树的第k大节点
		题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 题解: 考察的就是中序遍历 不过注意进行剪枝 cl ... 
- 面试题五十四:二叉搜索树的第K大节点
		方法:搜索二叉树的特点就是左树小于节点,节点小于右树,所以采用中序遍历法就可以得到排序序列 BinaryTreeNode KthNode(BinaryTreeNode pNode ,int k){ i ... 
- 剑指offer-面试题54-二叉搜索树的第k大节点-中序遍历
		/* 题目: 求二叉搜索树的第k大节点. */ /* 思路: 中序遍历. */ #include<iostream> #include<cstring> #include< ... 
- 二叉搜索树的第k大的节点
		题目 给定一颗二叉搜索树,请找出其中的第k大的结点. 思路 如果中序遍历一棵二叉搜索树,遍历序列的数值则是递增排序,因此只需中序遍历一个二叉搜索树即可. #include <iostream&g ... 
随机推荐
- 【noi 2.6_7624】山区建小学(DP)
			题意:在m个村庄建n个小学,求所有村到最近小学的距离总的最小值. 解法:由于题目是求"离最近的学校",而不是前一个学校,所以枚举学校的具体位置不方便,可转化成区间(学校居区间中间) ... 
- hdu4501——小明系列故事——买年货(多维背包)
			题解: 思路:将v1,v2,k都当作一种体积,开三维dp数组,每种物品只能取一次 代码中的for循环是倒着进行的,知道01背包和完全背包的肯定明白,倒着进行的就代表每种物品只选择一次 代码: 1 #i ... 
- Codeforces Round #668 (Div. 2)   B. Array Cancellation  (思维,贪心)
			题意:有一个长度为\(n\)并且所有元素和为\(0\)的序列,你可以使\(a_{i}-1\)并且\(a_{j}+1\),如果\(i<j\),那么这步操作就是免费的,否则需要花费一次操作,问最少操 ... 
- Codeforces Round #667 (Div. 3)   B. Minimum Product  (贪心,数学)
			题意:给你\(a\)和\(b\)两个数,每次操作可以是任意一个数\(-1\),最多操作\(n\),并且\(a\ge x\),\(b\ge y\),求操作后\(a*b\)的最小值. 题解:观察样例并且在 ... 
- Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo
			前言 使用C#开发动画,绘图性能跟不上,更换方案使用Qt开发Qt的控件制作成OCX以供C#调用,而activex则是ocx的更高级形式. QtCreator是没有Active控件项目的,所有需要 ... 
- C++ 变量声明数组
			int len; cin>>len; int *p=new int[len]; delete[] p; 不能写作 int p[]=new int[len]; 因为new是开辟了内存空间后返 ... 
- Postman查看上传文件过程时出现400 - Required MultipartFile parameter 'files' is not present错误
			我在利用postman查看上传图片文件时,出现了如下图的错误,看到之后很懵逼. 图1 上网搜了一下,归结下来就是参数不一致导致的.不过还有一些是由于没加注解,如下图示: 图2 关于参数不一致问题,主要 ... 
- uni-app in action
			uni-app in action uni-app 实战 $ npm run dev:%PLATFORM% $ npm run build:%PLATFORM% app-plus app平台生成打包资 ... 
- Windows 10 自带 free 屏幕截图/录像软件 Game Bar!  不仅仅是game-游戏呦!  高清晰,高保真,perfect!不仅仅是游戏呦!
			good news! good news! good news! 重要的事情说三遍! Windows 10 自带 屏幕截图/录像软件 Game Bar! 以后再也不用第三方的 盗版软件了! 对于Wi ... 
- Sentry 高级使用教程
			Sentry 高级使用教程 Sentry versions https://github.com/getsentry/sentry-docs https://github.com/getsentry/ ... 
