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);
        }
    }
  • 相关阅读:
    怎样从server获取图片
    面经
    cordova百度导航插件使用
    swift初探(供objective c开发人员參考)
    右击菜单简单实现
    ios--计时器演示样例:一闪一闪亮晶晶(动画)
    新建cocos2d-xproject
    atititt.java定时任务框架选型Spring Quartz 注解总结
    UIViewController的生命周期及iOS程序运行顺序
    hdu 1162 Eddy's picture (Kruskal算法,prim算法,最小生成树)
  • 原文地址:https://www.cnblogs.com/wxisme/p/5202393.html
Copyright © 2011-2022 走看看