// Filename : binary_tree.c
// Author : LupingChen
// Data : 2015.06.01
// Content : insert_data\travel_data
#include <stdio.h>
#include <stdlib.h>
//定义节点数据类型
typedef struct Node {
int data;//数据
struct Node* left;
struct Node* right;
} Node;
//定义二叉树数据类型
typedef struct {
Node* root;//记录根节点地址
int cnt;//统计节点数
} Tree;
//插入节点
void insert_data(Tree* pt, int data)
//插入节点的递归函数
void insert(Tree** pRoot, Node* pn);
//采用中序的方法遍历
void travel_data(Tree* pt);
//遍历递归函数
void travel(Tree* pRoot);
int mani()
{
//创建二叉树
Tree tree;
tree.root = NULL;
tree.cnt = 0;
return 0;
}
//采用中序的方法遍历
void travel_data(Tree* pt)
{
travel(pt->root);
printf("\n");
}
//遍历递归函数
void travel(Tree* pRoot)
{
//树不为空才遍历
if (pRoot != NULL)
{
//遍历左树
travel(pRoot->left);
//遍历根节点
printf("%d ", pRoot->data);
//遍历右树
travel(pRoot->right);
}
}
//插入节点的递归函数
void insert(Tree** pRoot, Node* pn)
{
//1.空二叉树的节点插入
if (NULL == *pRoot)
{
*pRoot = pn;
}
//2.非空插入,比较大小
//2.1根节点大于新节点插入左边
if (*pRoot->data > pn->data)
{
insert(&(*pRoot)->left, pn);
}
//2.2根节点大于新节点插入右边
else
{
insert(&(*pRoot)->right, pn);
}
}
//插入节点
void insert_data(Tree* pt, int data)
{
//1.创建节点
Node* pn = (Node* )malloc(sizeof(Node));
pn->data = data;
pn->left = NULL;
pn->right = NULL;
//2.插入节点
insert(&pt->root, pn);
//节点数加一
pt->cnt++;
有序二叉树链式存储结构1——插入与遍历
最新推荐文章于 2023-12-26 23:22:44 发布