码迷,mamicode.com
首页 > 其他好文 > 详细

有序二叉树链式存储结构1——插入与遍历

时间:2015-06-01 09:49:39      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

//  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——插入与遍历

标签:

原文地址:http://blog.csdn.net/c764785456/article/details/46292573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!