我知道如何从一般的树转换成二叉树,
a a
/ | \ /
b c d -> b
\
c
\
d
我刚刚被问到如何从一般的树转换成二叉树。我的想法是,问我的人要么不是指二叉搜索树(我问他,他说他指的是),要么是他误解了课堂笔记中的某些东西。无论如何,有没有人听说过这样做?从通用树到二叉搜索树?我给他的答案是首先转换成二叉树,然后对其进行排序,得到二
我有个问题需要帮助:
编写计算扩展二叉树内部路径长度的程序。使用它来实证地调查在随机生成的二叉树中搜索的键比较的平均数量。
编辑:
所以我想出了一个二叉树的C++类
#include <iostream>
/*Binary tree class based on the struct. Includes basic functions insert, delete, search */
struct node
{
int data;
node *left;
node *right;
};
class binarytree{
public:
我正在尝试使用递归函数使用二叉树(不,它不是二叉树,只是二叉树)来创建一种搜索方法。如果数据在二叉树上,我希望它返回节点,如果不在二叉树上,我希望它返回一个NULL值。我已经实现了搜索功能,它正在完美地完成它的工作。但问题是,该函数似乎不会返回节点。
下面是二叉树的struct:
struct data
{
int number;
struct data *left, *right;
}*root = NULL;
这就是我所说的搜索功能:
data* search(struct data *node, int key)
{
if(node == NULL)
让我们看一下下面的图片
这就是所谓的范围树。我不明白一件事,它看起来像一个二叉搜索树,所以如果我们插入元素,我们可以使用与插入二叉搜索树相同的过程。那么有什么不同呢?
我读过一篇教程,我猜它是kd树的变体,查询搜索树(如几何点搜索等),但如何构建它?像二叉树或者它需要额外的参数吗?也许就像这样
struct range
{
int lowerbound;
int upperbound,
int element;
};
在插入过程中,我们必须检查
if(element>lowerbound && element <upperbound)
then ins