是否有一种方法可以在满足条件时突然返回到调用下面方法的方法?类似于for循环的break。
public void createTree(TreeNode tree) throws IOException {
if (i >= preorder.length) {
// Leave recursive method
} else if (preorder[i] == '0') {
tree.value = '0';
tree.left = tree.right = null;
i++;
} else {
tree.value = preorder[i];
i++;
tree.left = new TreeNode();
createTree(tree.left);
tree.right = new TreeNode();
createTree(tree.right);
}
}
谢谢。
您可以简单地让方法返回。然后递归将向后执行,其余语句将被执行。
您可以从方法返回一个状态:
/**
* @return false if the recursion has been aborted
*/
public boolean createTree(TreeNode tree) throws IOException {
if (i >= preorder.length) {
return false;
}
else if (preorder[i] == '0') {
tree.value = '0';
tree.left = tree.right = null;
i++;
}
else {
tree.value = preorder[i];
i++;
tree.left = new TreeNode();
if (!createTree(tree.left)) {
return false;
};
tree.right = new TreeNode();
if (!createTree(tree.right)) {
return false;
}
}
}
你可以抛出一个异常,但这似乎是"脏"
你可以考虑使用一个运行时异常,但我不认为这是一个好的设计。
如果我的递归走了那么远,这意味着它是必需的…我可能会使用return