![](/img/trans.png)
[英]JavaScript Binary Search Tree in-order traversal returning undefined as part of answer
[英]How to stop In-order DFS traversal if value is found on a binary tree (not BST)
我有以下功能用於按順序 DFS 遍歷。 如果找到匹配的值,我希望遍歷停止並返回 true。 但它不起作用,即使該值在樹中,它也會返回 false。 這個功能有什么問題?
inOrderDfs(node, value) {
if (!node) {
return;
}
if (node.left) this.inOrderDfs(node.left, value);
if (node.value === value) return true;
if (node.right) this.inOrderDfs(node.right, value);
return false;
}
當滿足這些條件時,您不會返回,因此它會一直到底部並返回false
:
inOrderDfs(node, value) {
if (!node) {
return;
}
if (node.left) return this.inOrderDfs(node.left, value);
// ^^^^^^
if (node.value === value) return true;
if (node.right) return this.inOrderDfs(node.right, value);
// ^^^^^^
return false;
}
您需要檢查該值,然后返回:
inOrderDfs(node, value) {
if (!node) {
return;
}
if (node.left) return this.inOrderDfs(node.left, value);
// Add this
if (node.value === value) return true;
if (node.right) return this.inOrderDfs(node.right, value);
}
但是,如果它是 BST,那么您可以執行以下操作:
inOrderDfs(node, value) {
if (!node) {
return;
}
// Add this check first
if (node.value === value) return true;
if (node.left && val < node.val) {
return this.inOrderDfs(node.left, value);
}
else return this.inOrderDfs(node.right, value);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.