#include#include typedef struct _BT_NODE{ int data; struct _BT_NODE* left; struct _BT_NODE* right;}BT_NODE;BT_NODE* AppendNode(int data){ BT_NODE* node=(BT_NODE*)malloc(sizeof(BT_NODE)); node->left=NULL; node->right=NULL; node->data=data; return node;}void VisitNode(BT_NODE* node){ printf("%d ",node->data);}void DuplicateBinTree(BT_NODE* root,BT_NODE** root_dup_ptr){ if(root==NULL)return; (*root_dup_ptr)=(BT_NODE*)malloc(sizeof(BT_NODE)); (*root_dup_ptr)->data=root->data; (*root_dup_ptr)->left=NULL; (*root_dup_ptr)->right=NULL; DuplicateBinTree(root->left,&((*root_dup_ptr)->left)); DuplicateBinTree(root->right,&((*root_dup_ptr)->right));}void DFS(BT_NODE* root){ if(root==NULL)return; VisitNode(root); DFS(root->left); DFS(root->right);}int main() { BT_NODE* root; BT_NODE* root_dup; /* 10 /\ 20 3015 16 */ root=AppendNode(10); root->left=AppendNode(20); root->right=AppendNode(30); root->left->left=AppendNode(15); root->left->right=AppendNode(16); printf("Original tree traversal result:\n"); DFS(root); printf("\n"); DuplicateBinTree(root,&root_dup); printf("Duplicated tree traversal\n"); DFS(root_dup); printf("\n"); return 0;}