二叉树链表表示
来源:互联网 发布:股票大宗交易数据查询 编辑:程序博客网 时间:2024/04/27 22:06
#include <stdio.h>
#include <stdlib.h>
struct tree{
struct tree *left;
struct tree *right;
int data;
};
typedef struct tree treenode;
typedef treenode* b_tree;
b_tree insert_node(b_tree root, int node); //插入二叉树的节点
b_tree create_btree(int *data, int len); //建立二叉树
void print_tree(b_tree root); //打印二叉树
int main(){
b_tree root;
int i, index;
int value;
int nodelist[20];
printf_s("\n Please input the elements of binary tree(Exit for 0): \n");
index =0 ;
//读取数值到数组中
scanf_s("%d", &value);
while(value != 0){
nodelist[index] = value;
index ++;
scanf_s("%d", &value);
}
for(i=0; i<index; i++)
printf_s("%d ", nodelist[i]);
//建立二叉树
root = create_btree(nodelist, index);
//打印二叉树节点内容
print_tree(root);
return 0;
}
b_tree insert_node(b_tree root, int node){
b_tree newnode; //声明树根指针
b_tree currentnode; //声明目前节点指针
b_tree parentnode; //声明父节点指针
//建立新节点的内存空间
newnode = (b_tree) malloc(sizeof(treenode));
newnode->data = node; //存放节点内容
newnode->left = NULL; //设置左指针初值
newnode->right = NULL; //设置右指针初值
if(root == NULL)
return newnode; //返回新节点的位置
else{
currentnode = root; //存储目前节点指针
while(currentnode != NULL){
parentnode = currentnode; //存储父节点指针
if(currentnode->data > node) //比较节点值的数值大小
currentnode = currentnode->left; //左子树
else
currentnode = currentnode->right; //右子树
}
if(parentnode->data < node)
parentnode->right = newnode;
else
parentnode->left = newnode;
}
return root;
}
b_tree create_btree(int *data, int len){
b_tree root = NULL; //树根节点指针
int i;
for(i=0; i<len; i++)
root = insert_node(root, data[i]);
return root;
}
void print_tree(b_tree root){
b_tree pointer;
pointer = root->left;
printf_s("\nPrint left_subtree node of root: \n");
while(pointer != NULL){
printf_s("[%2d]\n", pointer->data); //打印节点内容
pointer = pointer->left;
}
pointer = root->right;
printf_s("Print right_subtree node of root: \n");
while(pointer != NULL){
printf_s("[%2d]\n", pointer->data);
pointer = pointer->right;
}
}
- 二叉树链表表示
- 小程序-----链表表示二叉树
- 静态链表表示二叉树
- 二叉树链表表示法
- 二叉树的二叉链表表示与实现
- 二叉树的二叉链表表示与实现
- 二叉树的二叉链表表示与实现
- 二叉树的二叉链表表示与实现
- 二叉树的二叉链表表示和实现
- 二叉树的二叉链表表示与实现
- 二叉树的链表表示法实现
- 二叉树的链表表示 C++实现
- 广义表表示树二叉树
- 广义表表示二叉树结构生成二叉链表的算法
- 二叉树数组表示法,链表表示法,中序遍历
- 数据结构——二叉树的孩子链表表示法
- 第6章 树和二叉树——递归方法先序、中序、后序遍历二叉链表表示的二叉树
- 树的儿子链表表示法
- 跟着鬼哥学android java hook(三)
- ReactOS分析MDL实现
- 【数据结构练习】简单四则运算
- partition encryption in LVM
- 点到线段的距离
- 二叉树链表表示
- 天空之城 主题曲《君をのせて》中日罗马音
- Business Intelligence Overview
- 快速入门:十分钟学会Python
- Zoj1012
- Arcgis Rest API for RouteAnalysic
- 海贼王_宾克斯的美酒 /ビンクスの酒_中日罗马音
- memcache .net 入门
- 顺序存储结构与链式存储结构的比较(也可以说的顺序表与链表的比较)