所以,我有一棵这样的树
a
/ \
b c
/ \ /
d e f
该功能必须打印:
a
ab
abd
abe
ac
acf
我的老师说我可以拥有的唯一参数是指向第一个节点的指针。我不能使用任何其他变量,包括静态和全局变量。
void print(Node* a)
{
if(a==NULL){return;}
cout<<a->data;
if(a->left!=NULL){print(a->left);}
if(a->right!=NULL){print(a-right);}
}
到目前为止,我的程序只能打印“abdecf”。有什么建议吗?
答案 0 :(得分:1)
您可以将父项添加到表示节点的结构中。像这样 -
class Node {
public:
char data;
Node *left;
Node *right;
Node *parent;
};
现在使用这个修改过的数据结构,您将在每个级别打印从当前节点到根的路径,如此 -
void print(Node* a)
{
Node *cur = a;
do {
cout << cur->data << ", ";
cur = cur->parent;
} while(cur != NULL);
if(a->left != NULL){
print(a->left);
}
if(a->right != NULL){
print(a->right);
}
}