#include#include //树节点 typedef struct _Node { int data; struct _Node* left;//左孩子 struct _Node* right;//右孩子 }Node; //树根 typedef struct _Tree { Node* root; }Tree; //树中插入元素 void insert(Tree* tree,int data) { //创建一个节点 Node* node = (Node*)malloc(sizeof(Node)); node->data = data; node->left = NULL; node->right = NULL; //判断树是否为空树 if (tree->root == NULL) { tree->root = node; } else//不是空数 { Node* temp = tree->root;//从树根开始不断对比,插入到合适的位置 while (temp!=NULL) { //小于左孩子的值 if (data data) { if (temp->left == NULL) { temp->left = node; return; } else { temp = temp->left; } } else//大于左孩子的值 { if (temp->right == NULL) { temp->right = node; return; } else { temp = temp->right; } } } } } //中序遍历 void travse(Node* node) { if (node!=NULL) { travse(node->left); printf("%d ", node->data); travse(node->right); } } void distory_tree(Node* node) { if (node!=NULL) { distory_tree(node->left); distory_tree(node->right); printf("free data:%d n", node->data); free(node); node = NULL; } } int main() { int n; Tree tree; tree.root = NULL; printf("请输入要添加数据的个数:n"); scanf("%d", &n); for (int i = 0; i < n; i++) { int temp; scanf("%d", &temp); insert(&tree,temp); } printf("遍历输出:"); //遍历整个树 travse(tree.root); putchar('n'); //销毁一棵树 distory_tree(tree.root); system("pause"); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)