二叉树的C++基础
问题描述:
void BinarySearchTree::insert(int d)
{
tree_node* t = new tree_node;
tree_node* parent;
t->data = d;
t->left = NULL;
t->right = NULL;
parent = NULL;
// is this a new tree?
if(isEmpty()) root = t;
else
{
//Note: ALL insertions are as leaf nodes
tree_node* curr;
curr = root;
// Find the Node's parent
while(curr)
{
parent = curr;
if(t->data > curr->data) curr = curr->right;
else curr = curr->left;
}
if(t->data < parent->data)
parent->left = t;
else
parent->right = t;
}
}
问题:二叉树的C++基础
为什么我需要为tree_node * T分配内存;使用新的但不适用于tree_node * parent;?
tree_node究竟是什么*它在内存中看起来像什么,它有什么作用?
有人可以向我解释 - >运算符及其工作原理吗?
答
为什么我需要为tree_node * T分配内存;使用new但不适用于tree_node * parent;?
你不需要需要,但它是逻辑的一部分。 t
表示您要插入的新节点,因此您需要先创建它(由new
完成)。你不分配的内存parent
,因为它会引用一个已经存在的节点:
while(curr)
{
parent = curr;
//...
到底是什么tree_node *它是什么样子像在内存中,它有什么作用?
没有办法告诉(它应该在某处定义),但它可能是一个结构,像这样:
struct tree_node
{
tree_node* left;
tree_node* right;
int data;
}
能有人向我解释 - >运算符,它是如何工作的?
它用于通过指针访问对象成员。如果您有Class* x
,那么x->a
相当于(*x).a
。
tree_node * t被用作新节点,即将被插入的节点,而parent只是用于在处理期间存储父节点的临时存储变量。 ' - >'操作符是一个访问器,因此您可以将数据存储在对象中。至于tree_node究竟是什么?这可能是专门为此树实现而创建的自定义数据类型。你必须仔细查看你的来源。 – TheZ 2012-07-26 23:05:58
' - >'和其他语言中的'.'意思相同;它引用一个对象的成员。所以'parent-> right'表示父对象中的'right'成员。 – 2012-07-26 23:08:23
@RobertHarvey好...父母不是一个对象,而是一个指针。 – 2012-07-26 23:11:38