zoukankan      html  css  js  c++  java
  • Leetcode 230. 二叉搜索树中第K小的元素 中序遍历

    地址 https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/

    给定一个二叉搜索树的根节点 root ,和一个整数 k ,
    请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
    
    示例 1:
    

    输入:root = [3,1,4,null,2], k = 1
    输出:1
    
    
    示例 2:
    

    输入:root = [5,3,6,2,4,null,null,1], k = 3
    输出:3
    
    提示:
    树中的节点数为 n 。
    1 <= k <= n <= 10^4
    0 <= Node.val <= 10^4
    

    解答
    二叉搜索书的中序遍历就是有序排列, 那么在中序遍历过程中记录获得的是第几个节点
    遍历到第K个节点就 得到了答案

    class Solution {
    public:
        int ans =0;
        void dfs(TreeNode* root,int& num,int k){
            if(root == NULL ||num>k) return;
            dfs(root->left,num,k);
            num++;
            if(num == k) {  ans = root->val; return;  }
            dfs(root->right,num,k);
        }
    
        int kthSmallest(TreeNode* root, int k) {
            int n =0;
            dfs(root,n,k);
            return ans;
        }
    };
    
    
  • 相关阅读:
    三维形体的表面积
    访问所有点的最小时间
    链式队列
    顺序队列
    链栈
    顺序栈
    双向链表
    pyrhon 开始 基础类型
    GDI+_VB6_ARGB
    WindowsPhone自定义控件详解(一)
  • 原文地址:https://www.cnblogs.com/itdef/p/15521181.html
Copyright © 2011-2022 走看看