这是维基百科上关于二叉搜索树的一些代码:
```c++ struct node { int key_value; node *left; node *right; };
class btree { public: btree(); ~btree();
void insert(int key); node *search(int key); void destroy_tree(); private: void destroy_tree(node *leaf); void insert(int key, node *leaf); node *search(int key, node *leaf);
node *root; }; ```
以上是二叉搜索树的结构体和类定义,其中包括插入、查找和销毁二叉树等操作。
现在这里有一棵二叉树:
如果我正在搜索11,并按照上面的算法操作,我会从10开始,走向右边的12,然后左转到9。最终我到达树的末端,却没有找到11。 但11确实存在于我的树中,只不过在另一侧。
请问此算法在我的树上能够工作的二叉树有哪些限制?
谢谢。
```c++ struct node { int key_value; node *left; node *right; };
class btree { public: btree(); ~btree();
void insert(int key); node *search(int key); void destroy_tree(); private: void destroy_tree(node *leaf); void insert(int key, node *leaf); node *search(int key, node *leaf);
node *root; }; ```
以上是二叉搜索树的结构体和类定义,其中包括插入、查找和销毁二叉树等操作。
# 'node' refers to the parent-node in this case
def search_binary_tree(node, key):
if node is None:
return None # key not found
if key < node.key:
return search_binary_tree(node.leftChild, key)
elif key > node.key:
return search_binary_tree(node.rightChild, key)
else: # key is equal to node key
return node.value # found key
现在这里有一棵二叉树:
10
5 12
3 8 9 14
4 11
如果我正在搜索11,并按照上面的算法操作,我会从10开始,走向右边的12,然后左转到9。最终我到达树的末端,却没有找到11。 但11确实存在于我的树中,只不过在另一侧。
请问此算法在我的树上能够工作的二叉树有哪些限制?
谢谢。