双树和 C++ 程序中的示例
在本教程中,我们将学习如何对给定的树进行翻倍。
让我们来看一下解决此问题的步骤。
创建节点类。
使用虚拟数据初始化树。
编写递归函数以对树进行翻倍。
递归遍历树。
将左节点存储在一个变量中。
遍历后,通过创建新节点添加数据。
现在,将左节点添加为新创建节点的左子节点。
打印树。
示例
让我们来看一下代码。
#include <bits/stdc++.h> using namespace std; class node { public: int data; node* left; node* right; }; node* newNode(int data) { node* Node = new node(); Node->data = data; Node->left = NULL; Node->right = NULL; return Node; } void doubleTree(node* Node) { node* oldLeft; if (Node == NULL) return; doubleTree(Node->left); doubleTree(Node->right); oldLeft = Node->left; Node->left = newNode(Node->data); Node->left->left = oldLeft; } void printTree(node* node) { if (node == NULL) { return; } printTree(node->left); cout << node->data << " "; printTree(node->right); } int main() { node *root = newNode(1); root->left = newNode(2); root->right = newNode(3); cout << "Original Tree" << endl; printTree(root); cout << endl; doubleTree(root); cout << "Double Tree" << endl; printTree(root); cout << endl; return 0; }
输出
如果你运行上面的代码,你将得到以下结果。
Original Tree 2 1 3 Double Tree 2 2 1 1 3 3
结论
如果你对本教程有任何疑问,可以在评论部分中留言。
广告