二叉树的链表表示法实现

来源:互联网 发布:telnet端口开启 编辑:程序博客网 时间:2024/03/28 17:55
本程序实际上是构建了一颗二叉排序树,程序最后输出构建数的中序遍历。
代码实现:
#include <stdio.h>#include <stdlib.h> typedef int DataType; typedef struct BTree{DataType data;struct BTree *Tleft;struct BTree *Tright;}*BTree;BTree CreateTree(); BTree insert(BTree root, DataType data);void InBTree(BTree root);  int main(){BTree root = NULL;root = CreateTree();InBTree(root); printf("\n"); return 0; }BTree CreateTree(){BTree root = NULL;DataType temp = 0;printf("Input data, if you want to exit, please input 0:\n"); scanf("%d", &temp); while(temp != 0){    root = insert(root, temp);scanf("%d", &temp);  }return root; } BTree insert(BTree root, DataType data){BTree ptr = root;BTree tempNode; BTree newNode = (BTree)malloc(sizeof(struct BTree)); newNode->data = data ;newNode->Tleft = NULL;newNode->Tright = NULL;if(ptr == NULL){return newNode; }else{while(ptr != NULL){tempNode = ptr; if(ptr->data >= data){ptr = ptr->Tleft; }else{ptr = ptr->Tright; } } if(tempNode->data >= data){tempNode->Tleft =  newNode; }else{tempNode->Tright =  newNode; } }return root; }void InBTree(BTree root){if(root != NULL){InBTree(root->Tleft); printf("%d ", root->data); InBTree(root->Tright);} } 

程序的输出如下:

原创粉丝点击