zoukankan      html  css  js  c++  java
  • LeetCode-230. Kth Smallest Element in a BST

    Description:

    Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

    Note: 
    You may assume k is always valid, 1 ≤ k ≤ BST's total elements.

    题意:从二叉查找树中找第k小的数。

    思路:中序遍历,找到第k个便是。

    C++:

    class Solution {
    public:
        int num=0;//记录次数
    int re;//记录最终结果
    
    //中序遍历的方法
    void digui(TreeNode* root, int k)
    {
        if(root->left!=NULL)
            digui(root->left,k);
        num++;
        if(num==k)
            re=root->val;
        if(root->right!=NULL)
            digui(root->right,k);
        return;
    }
        int kthSmallest(TreeNode* root, int k) {
            digui(root,k);
        return re;
        }
    };

    LeetCode很奇怪,同样的代码Java却过不了。。。还是1 null 2 ,2这个数据过不了,我自己测试的都能过。。。。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public static int cnt = 0;
        public static int ans;
        public int kthSmallest(TreeNode root, int k) {
            travels(root, k);
            return ans;
        }
        public void travels(TreeNode node, int k) {
            if(node.left != null)
                travels(node.left, k);
            cnt ++;
            if(cnt == k) {
                ans = node.val;
            }
            if(node.right != null)
                travels(node.right, k);
        }
    }

    更新----------------

    终于找到原因了,原来我用了静态变量,后台测试连续调用,结果不清零。。。

    最终Java代码:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int cnt = 0;
        public int ans;
        public int kthSmallest(TreeNode root, int k) {
            travels(root, k);
            return ans;
        }
        public void travels(TreeNode node, int k) {
            if(node == null)
                return ;
            travels(node.left, k);
            cnt ++;
            if(cnt == k) {
                ans = node.val;
                return ;
            }
            travels(node.right, k);
        }
    }
  • 相关阅读:
    基于maven使用IDEA创建多模块项目
    开发时用于文件前说明
    nginx配置ThinkPHP配置
    spring原理机制
    将spring源码导入到eclipse中
    【调试】Core Dump是什么?Linux下如何正确永久开启?
    【最详细最完整】在Linux 下如何打包免安装的QT程序?
    Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)
    Ubuntu 守护进程
    【Qt】QLabel之动态阴影边框
  • 原文地址:https://www.cnblogs.com/wxisme/p/5202393.html
Copyright © 2011-2022 走看看