在树上执行二进制搜索时出现堆栈溢出错误。我认为它有一个有效的递归终止条件,但我不确定。
TreeNode Find(TreeNode tree, int value) {
if((tree.val == value) || tree==null)
return tree;
else if(value < tree.val)
return Find(tree.left, value);
else
return Find(tree.right, value);
}
答案 0 :(得分:0)
错误发生在其他地方(你的功能几乎完全正确):
你的树不平衡!
你需要做的是插入功能。一个简单的插入函数只会创建一个像树一样的链表,因为如果你在&#34;升序&#34;中插入元素。订单,它们总是只添加到&#34; left&#34;或者向右。
堆栈的空间有限,所以如果你有一个平衡的树,它可以有4亿个节点,它的最大高度仍然是32个。但是如果你的树是不平衡的,即使是很少的节点(1000)它也可以进入堆栈溢出。
我还建议首先检查null(这不是你的问题,把它作为一个免费的bug修复)
if(tree==null || tree.val == value )