废话不多说上代码,撸起来!!!
头文件声明和定义:BinaryTree.hpp
#include<iostream>
using namespace std;
struct TreeNode
{
char* m_strdata;
TreeNode* m_lNext;
TreeNode* m_rNext;
};
TreeNode * CopyTree(const TreeNode* rootNode) //二叉树拷贝
{
TreeNode* new_rootNode = NULL;
TreeNode* new_lNode = NULL;
TreeNode* new_rNode = NULL;
if (rootNode == NULL)
{
return NULL;
}
if (rootNode->m_lNext!=NULL)
{
new_lNode = CopyTree(rootNode->m_lNext);
}
else
{
new_lNode = NULL;
}
if (rootNode->m_rNext != NULL)
{
new_rNode = CopyTree(rootNode->m_rNext);
}
else
{
new_rNode = NULL;
}
new_rootNode = (TreeNode*)malloc(sizeof(TreeNode));
if (new_rootNode==NULL)
{
return NULL;
}
new_rootNode->m_lNext = new_lNode;
new_rootNode->m_rNext = new_rNode;
new_rootNode->m_strdata = rootNode->m_strdata;
return new_rootNode;
}
void InOrder(const TreeNode* treeNode) //递归遍历二叉树
{
if (treeNode == NULL)
{
return;
}
InOrder(treeNode->m_lNext);
printf("%s ", treeNode->m_strdata);
InOrder(treeNode->m_rNext);
}
测试程序:main.cpp
#include <iostream>
#include "BinaryTree.hpp"
using namespace std;
int main()
{
TreeNode tn1;
TreeNode tn2;
TreeNode tn3;
TreeNode tn4;
TreeNode tn5;
TreeNode tn6;
tn1.m_strdata = "A";
tn2.m_strdata = "B";
tn3.m_strdata = "C";
tn4.m_strdata = "D";
tn5.m_strdata = "E";
tn6.m_strdata = "F";
tn1.m_lNext = &tn2;
tn1.m_rNext = &tn3;
tn2.m_lNext = &tn4;
tn2.m_rNext = &tn5;
tn3.m_lNext = &tn6;
tn3.m_rNext = NULL;
tn4.m_lNext = NULL;
tn4.m_rNext = NULL;
tn5.m_lNext = NULL;
tn5.m_rNext = NULL;
tn6.m_lNext = NULL;
tn6.m_rNext = NULL;
printf("InOrder: ");
InOrder(&tn1); //递归遍历
printf("\n");
printf("NewOrder: ");
TreeNode* retTree = CopyTree(&tn1); //拷贝二叉树
InOrder(retTree);
printf("\n");
getchar();
return 0;
}
微信:18761536023