繁体   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