LeetCode-230. Kth Smallest Element in a BST
6236 ワード
Description:
Given a binary search tree, write a function
Note: You may assume k is always valid, 1 ≤ k ≤ BST's total elements.
題意:二叉検索ツリーからk番目の小さい数を探す.
構想:中序遍歴、k番目を見つけるのは.
C++:
LeetCodeはおかしいですが、同じコードJavaは通れません...やはり1 null 2,2このデータは过ごすことができなくて、私自身のテストのすべて过ごすことができます...
更新----------
やっと原因を見つけました.私は静的変数を使って、バックグラウンドテストで連続的に呼び出して、結果はゼロではありません.の
最終Javaコード:
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);
}
}