最优二叉树搜索

时间:2015-09-11 10:51:14

标签: c data-structures binary-search-tree

我想编写一个函数来获取已排序的binart树的根和值。

该函数返回值是否在树中。

二叉树中的节点如下所示:

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;
}

有谁知道更优化的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:3)

  

在大量使用代码并应用指标和分析结果后,需要进行优化。通常,唯一值得的优化是那些能够在速度方面获得一个数量级性能提升的优化。

除非:

,否则所有优化都为时过早
  1. 程序太慢了。
  2. 您有一个衡量标准,表明优化可以改善目标。
  3. 因此,您的答案就是:您的代码看起来最适合您的需求,无需进行优化。