1

所以,我得到了一棵这样的树

                        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”。有什么建议吗?

4

1 回答 1

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);
  }
}
于 2013-03-03T06:41:10.250 回答