[英]how to recursively visit all tree node
所以,我有一棵这样的树
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”。 有什么建议吗?
您可能要做的是将父级添加到表示节点的结构中。 像这样-
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.