【发布时间】:2020-08-16 03:49:38
【问题描述】:
我试图从 leetcode 解决这个问题,提示如下:
给定一棵二叉搜索树,编写一个函数 kthSmallest 来查找其中的第 k 个最小元素。 https://leetcode.com/problems/kth-smallest-element-in-a-bst/description/
class Solution {
public int kthSmallest(TreeNode root, int k) {
TreeNode curr = new TreeNode(0);
ArrayList<TreeNode> res = new ArrayList<TreeNode>();
res = inOrder(root);
if(res != null){
curr = res.get(k);
return curr.val;
}
return -1; //if not found
}
public ArrayList<TreeNode> inOrder(TreeNode root){ //the value of the nodes would be in increasing order
ArrayList<TreeNode> list = new ArrayList<TreeNode>();
if(root == null){
return list;
}
list.addAll(inOrder(root.left));
list.addAll(inOrder(root));
list.addAll(inOrder(root.right));
return list;
}
}
但是,系统给了我“超出内存限制”错误消息,是我的逻辑有问题还是我可以修复我的代码?提前致谢!
【问题讨论】:
-
list.addAll(inOrder(root));== 无限递归。应该只是在这里添加根节点。
标签: java binary-search-tree inorder