关于一个二叉树的结构体定义:
struct node
{
char c;
node* l;
node* r;
};
在构建一个二叉树时,如下所示:
void deal()
{
node* head = NULL;
while (q.size())
{
string t = q.top();
q.pop();
for (int i = 0; i < t.length(); i++)
add(head,t[i]);
}
disp(head);
puts("");
}
void add(node* &t, char c)
{
if (t == NULL)
{
t = new node;
t->c = c;
t->l = NULL;
t->r = NULL;
}
else
{
if (c < t->c)add(t->l, c);
else add(t->r, c);
}
}
需要注意其中的new、指针传递时的&符号。
虽然在传统算法中可能基本上用不上,但在一些机试中,这样写可能比用算法的方式更好。