我想写一个函数,得到一个排序的二进制树的根和一个值。
函数返回值是否在树中。
二叉树中的节点如下所示:
struct Node {
int key; // Contains the key in the current node
Node* right; // Right subtree. All nodes in it will be GREATER than the current. May be NULL
Node* left; // Left subtree. All nodes in it will be SMALLER than the current. May be NULL
};
我有以下解决方案:
bool searchBinaryTree(int value, Node* root) {
Node* currNode = root;
while(currNode) {
if((currNode->key) < value) {
currNode = currNode->right;
} else if((currNode->key) > value) {
currNode = currNode->left;
} else {
return true;
}
}
return false;
}
有谁知道一个更好的解决方案吗?
谢谢!
最佳答案
当代码被大量使用时,在应用度量并分析其结果之后,就需要进行优化。通常,唯一有价值的优化是那些在速度方面为您带来数量级性能改进的优化。
所有优化都为时过早,除非:
程序太慢。
你有一个测量结果表明优化可以改善事情。
因此,在您的情况下,答案是:您的代码看起来非常适合您的需要,不需要优化。