学习二插树的创建

原创 2016年08月29日 22:41:10
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define TREE_TYPE int
#define size 15

//定义树形结构
typedef struct Tree
{
    TREE_TYPE value;
    struct Tree* left;
    struct Tree* right;
}Tree_node;

//根节点作为全局静态变量
static Tree_node* root;

//初始化树
void create_tree()
{
    root = NULL;
}

//向树中插入数据
Tree_node* insert(Tree_node *node,TREE_TYPE value)
{
    if(node == NULL)
    {
	node = (Tree_node*)malloc(sizeof(Tree_node));
	node->value = value;
	node->left = NULL;
	node->right = NULL;
	if(NULL == root)
	    root = node;
    }
    else
    {
	if(value < node->value)
	    node->left = insert(node->right,value);
	else
	    node->right = insert(node->right,value);
    }
    return node;
}

//显示树中所有节点内容
void show_all(Tree_node* node)
{
    if(NULL != node)
    {
	if(NULL != node->left);
	    show_all(node->left);
	printf("%d  ",node->value);
	if(NULL != node->right);
	    show_all(node->right);
    }
}

void main(void)
{
    create_tree();
    //插入
    TREE_TYPE list[size] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    int i;
    for(i = 0;i < size;i++)
	insert(root,list[i]);
    //显示
    show_all(root);
    printf("\n");
    return;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

二插排序树各种算法

package binarySortTree; public class  SNode> implements Comparable>{ private T data; private SNod...
  • u011955252
  • u011955252
  • 2015年09月25日 09:52
  • 297

二插查找树的Java实现

public class BinarySearchTree> {     private Node root;//根节点     private int count;//节点数     /*     ...
  • tomorrow_fine
  • tomorrow_fine
  • 2017年03月27日 16:10
  • 174

二叉查找树Java实现代码

二叉查找树(Binary Search Tree),或者是一颗空树,或者是具有下列性质的二叉树: 1、若它的左子树不空,则其左子树上的所有结点的值均小于它根结点的值; 2、若它的右子树不空,则其右...
  • fjssharpsword
  • fjssharpsword
  • 2016年07月20日 16:52
  • 2684

二叉排序树的建立和各种遍历方法-java(附详细注释和单元测试)

二叉排序树的建立和各种遍历方法 二叉排序树的定义: 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; ...
  • lwxdjk
  • lwxdjk
  • 2016年08月04日 21:54
  • 1002

二插排序树

二分查找只适用于静态头文件
  • lzjsqn
  • lzjsqn
  • 2014年05月20日 00:58
  • 786

层次遍历二插树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。/* struct TreeNode { int val; struct TreeNode *left; st...
  • Reoger
  • Reoger
  • 2017年04月02日 10:58
  • 407

基本数据结构(树和堆)

前面文章中介绍了线性结构和表结构,但是这些数据结构一般不适合于描述具有分支结构的数据。在这种数据之间可能有祖先—后代,上级—下级、整体—部分等分支的关系。下文介绍的树形结构则是以分支关系定义的层次结构...
  • Linoi
  • Linoi
  • 2013年12月26日 17:17
  • 2380

二插树相关知识

1.删总体思想: 分多种情况讨论 1.被删除节点没有子树的情况,直接删除,并修改对应父节点的指针为空。 2.对于只有一个子树的情况,考虑将其子树作为其父节点的子树,关于是左还是右,根据被删除的节点确定...
  • sinat_31719925
  • sinat_31719925
  • 2015年11月19日 13:41
  • 190

二叉树-详解二叉排序树

一、二叉搜索树首先二叉排序树也是一棵二叉树,所谓二叉树,就是“任何节点最多只允许两个子节点”,这两个子节点称为左右子节点。如下便是一个二叉树。 1.1、二叉排序树性质:1、就是若它的左子树不...
  • yixianfeng41
  • yixianfeng41
  • 2016年10月14日 01:06
  • 9384

Jobdu 题目1201:二叉排序树

http://ac.jobdu.com/problem.php?pid=1201
  • xtzmm1215
  • xtzmm1215
  • 2014年08月14日 21:20
  • 784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习二插树的创建
举报原因:
原因补充:

(最多只允许输入30个字)