[英]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.