21xrx.com
2024-06-03 03:33:22 Monday
登录
文章检索 我的文章 写文章
如何在C++中输出复制的二叉树序列?
2023-07-10 12:48:40 深夜i     --     --
C++ 输出 复制 二叉树序列

在C++中,如果需要输出已经复制好的二叉树序列,可以通过以下步骤实现:

1. 首先定义一个结构体来表示二叉树的每一个节点,该结构体需要包括该节点的值以及指向其左右子节点的指针。


struct Node {

  int value;

  Node* left;

  Node* right;

  Node(int v) : value(v), left(nullptr), right(nullptr) {}

};

2. 创建一个函数,该函数接收一个二叉树的根节点作为参数,并返回一个包含该节点以及其子节点的vector。


vector<Node*> copyTree(Node* root) {

  if (!root) {

    return {};

  }

  vector<Node*> nodes = {root};

  vector<Node*> leftNodes = copyTree(root->left);

  nodes.insert(nodes.end(), leftNodes.begin(), leftNodes.end());

  vector<Node*> rightNodes = copyTree(root->right);

  nodes.insert(nodes.end(), rightNodes.begin(), rightNodes.end());

  return nodes;

}

3. 在主函数中调用copyTree函数,然后循环遍历返回的vector,并将每个节点的值打印出来。


int main() {

  Node* root = new Node(1);

  root->left = new Node(2);

  root->right = new Node(3);

  root->left->left = new Node(4);

  root->left->right = new Node(5);

  root->right->left = new Node(6);

  root->right->right = new Node(7);

  vector<Node*> nodes = copyTree(root);

  for (auto node : nodes)

    cout << node->value << " ";

  

  return 0;

}

通过以上步骤,已经可以输出复制的二叉树序列了。需要注意的是,在复制二叉树时,需要深拷贝节点,否则可能会影响原始二叉树结构。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复