簡體   English   中英

如何遞歸訪問所有樹節點

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM