C语言树形输出AVL树28个随机数的插入过程
2010-05-20 16:19
225 查看
C语言打印,树按水平方向生长,○代表一个空结点。
---------------------------------------
1
---------------------------------------
┌──56
1
└○
---------------------------------------
┌──56
20
└──1
---------------------------------------
┌──81
┌──56
│ └○
20
└──1
---------------------------------------
┌──81
┌──58
│ └──56
20
└──1
---------------------------------------
┌──81
┌──58
│ └○
56
│ ┌──48
└──20
└──1
---------------------------------------
┌──81
┌──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌──89
┌──81
│ └──58
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌○
┌──89
│ └──82
┌──81
│ └──58
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌○
┌──89
│ └──82
┌──81
│ │ ┌──74
│ └──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌○
┌──89
│ └──82
┌──81
│ │ ┌──74
│ └──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌──18
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──10
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──10
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌──18
│ ┌──15
│ │ └──10
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──10
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──10
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──10
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ │ ┌○
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ │ ┌──60
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ │ ┌──71
│ │ │ └──61
│ └──60
│ │ ┌○
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ │ ┌──71
│ │ │ └──61
│ └──60
│ │ ┌○
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
代码如下:
---------------------------------------
1
---------------------------------------
┌──56
1
└○
---------------------------------------
┌──56
20
└──1
---------------------------------------
┌──81
┌──56
│ └○
20
└──1
---------------------------------------
┌──81
┌──58
│ └──56
20
└──1
---------------------------------------
┌──81
┌──58
│ └○
56
│ ┌──48
└──20
└──1
---------------------------------------
┌──81
┌──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌──89
┌──81
│ └──58
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌○
┌──89
│ └──82
┌──81
│ └──58
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌○
┌──89
│ └──82
┌──81
│ │ ┌──74
│ └──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
└──1
---------------------------------------
┌○
┌──89
│ └──82
┌──81
│ │ ┌──74
│ └──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──58
│ └○
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌○
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──35
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌──18
└──1
└○
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌──18
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──10
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──10
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌──18
│ ┌──15
│ │ └──10
└──2
└──1
---------------------------------------
┌──89
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──10
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌──37
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──10
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──10
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ └──45
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──51
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ └──58
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ │ ┌○
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ └──71
│ │ ┌──60
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ │ ┌──71
│ │ │ └──61
│ └──60
│ │ ┌○
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
┌──98
┌──89
│ └○
┌──86
│ └──82
┌──81
│ │ ┌──74
│ │ ┌──71
│ │ │ └──61
│ └──60
│ │ ┌○
│ └──58
│ └──57
56
│ ┌──53
│ ┌──51
│ │ └○
│ ┌──48
│ │ │ ┌○
│ │ └──45
│ │ └──38
│ ┌──37
│ │ │ ┌○
│ │ └──35
│ │ └──31
└──20
│ ┌○
│ ┌──18
│ │ └──17
└──15
│ ┌──12
│ ┌──10
│ │ └○
└──2
└──1
---------------------------------------
代码如下:
/* AvlTree.h */ #ifndef _AVLTREE_H_ #define _AVLTREE_H_ #define elementType int struct AvlNode; typedef struct AvlNode *AvlTree; typedef struct AvlNode *AvlPos; AvlTree insertAvl(elementType X, AvlTree T); AvlTree deleteAvl(elementType X, AvlTree T); void printAvlTree( AvlTree T ); void drawAvlTree( AvlTree T ); #endif
/* AvlTree.c */ #include <stdlib.h> #include <stdio.h> #include "AvlTree.h" #define LEFT 0 #define RIGHT 1 struct AvlNode { elementType element; AvlTree left; AvlTree right; int height; }; void error( char *str ) { printf( str ); printf( "\n" ); exit( EXIT_FAILURE ); } AvlPos findMax( AvlTree T ) { if ( T ) while ( T->right ) T = T->right; return T; } AvlPos findMin( AvlTree T ) { if ( T ) while ( T->left ) T = T->left; return T; } int getHeight( AvlPos P ) { if ( !P ) return -1; else return P->height; } AvlPos singleRotate2Right( AvlPos P2 ) { AvlPos P1; P1 = P2->left; P2->left = P1->right; P1->right = P2; P2->height = max( getHeight( P2->left ), getHeight( P2->right ) ) + 1; P1->height = max( getHeight( P1->left ), getHeight( P1->right ) ) + 1; return P1; } AvlPos singleRotate2Left( AvlPos P2 ) { AvlPos P1; P1 = P2->right; P2->right = P1->left; P1->left = P2; P2->height = max( getHeight( P2->left ), getHeight( P2->right ) ) + 1; P1->height = max( getHeight( P1->left ), getHeight( P1->right ) ) + 1; return P1; } AvlPos doubleRotate2Right( AvlPos P ) { P->left = singleRotate2Left( P->left ); return singleRotate2Right( P ); } AvlPos doubleRotate2Left( AvlPos P ) { P->right = singleRotate2Right( P->right ); return singleRotate2Left( P ); } AvlTree insertAvl( elementType X, AvlTree T ) { if ( !T ) { T = malloc( sizeof(struct AvlNode) ); if ( !T ) error( "Memory allocation error!" ); else { T->element = X; T->left = NULL; T->right = NULL; T->height = 0; } } else if ( X < T->element ) { T->left = insertAvl( X, T->left ); if ( getHeight( T->left ) - getHeight( T->right ) == 2 ) { if ( X < T->left->element ) T = singleRotate2Right( T ); else T = doubleRotate2Right( T ); } } else if ( X > T->element ) { T->right = insertAvl( X, T->right ); if ( getHeight( T->right ) - getHeight( T->left ) == 2 ) { if ( X > T->right->element ) T = singleRotate2Left( T ); else T = doubleRotate2Left( T ); } } T->height = max( getHeight( T->left ), getHeight( T->right ) ) + 1; return T; } AvlPos rotate( AvlPos P ) { if ( getHeight( P->left ) - getHeight( P->right ) == 2 ) { if ( getHeight( P->left->left ) < getHeight( P->left->right ) ) P = doubleRotate2Right( P ); else P = singleRotate2Right( P ); } else if ( getHeight( P->right ) - getHeight( P->left ) == 2 ) { if ( getHeight( P->right->right ) < getHeight( P->right->left ) ) P = doubleRotate2Left( P ); else P = singleRotate2Left( P ); } return P; } AvlTree deleteAvl( elementType X, AvlTree T ) { AvlPos tmpPos; if ( !T ) { printf( "Element (%d) not found!\n", X ); return T; } else if ( X < T->element ) { T->left = deleteAvl( X, T->left ); T = rotate( T ); } else if ( X > T->element ) { T->right = deleteAvl( X, T->right ); T = rotate( T ); } else if ( T->left && T->right ) { //both subtrees are not NULL. if ( T->left->height > T->right->height ) { //if left subtree is higher. tmpPos = findMax( T->left ); T->element = tmpPos->element; T->left = deleteAvl( T->element, T->left ); T = rotate( T ); } else { //if right subtree is higher or both are equal. tmpPos = findMin( T->right ); T->element = tmpPos->element; T->right = deleteAvl( T->element, T->right ); T = rotate( T ); } } else { //one of the two subtrees is NULL. tmpPos = T; if ( !T->left ) T = T->right; else T = T->left; free( tmpPos ); return T; } T->height = max( getHeight( T->left ), getHeight( T->right ) ) + 1; return T; } void printAvl( AvlTree T, int *count ) { if ( T ) { printAvl( T->left, count ); printf( "%d ", T->element ); ++ *count; printAvl( T->right, count ); } } void printAvlTree( AvlTree T ) { int count = 0; printf( "(" ); printAvl( T, &count ); printf( "):%d nodes\n", count ); } void drawAvl( AvlTree T, int depth, int *LR ) { int i; //print right subtree. LR[depth] = RIGHT; if ( T->right ) { drawAvl( T->right, depth + 1, LR ); } else if ( T->left ) { //if right subtree is NULL and left subtree is not NULL, draw right subtree as a NULL node. for ( i = 1; i <= depth; i++ ) if ( LR[i-1] - LR[i] ) printf( "│ " ); else printf( " " ); if ( i == depth + 1 ) printf( "┌○\n" ); } //print current node. for ( i = 1; i < depth; i++ ) if ( LR[i-1] - LR[i] ) printf( "│ " ); else printf( " " ); if ( i == depth ) if ( LR[i-1] == RIGHT ) printf( "┌──" ); else if ( LR[i-1] == LEFT ) printf( "└──" ); printf( "%d\n", T->element ); //print left subtree. LR[depth] = LEFT; if ( T->left ) { drawAvl( T->left, depth + 1, LR ); } else if ( T->right ) { //if left subtree is NULL and right subtree is not NULL, draw left subtree as a NULL node. for ( i = 1; i <= depth; i++ ) if ( LR[i-1] - LR[i] ) printf( "│ " ); else printf( " " ); if ( i == depth + 1 ) printf( "└○\n" ); } } void drawAvlTree( AvlTree T ) { int *LR; if ( !T ) error( "Tree is NULL!" ); LR = calloc( getHeight( T ) + 1, sizeof( int ) ); if ( LR ) { drawAvl( T, 0, LR ); free( LR ); printf( "---------------------------------------\n" ); } else error( "Memory allocation error!" ); }
/* mian.c */ #include <stdlib.h> #include "AvlTree.h" main() { int i; AvlTree tree = NULL; /* tree = insertAvl( 3, NULL ); drawAvlTree( tree ); tree = insertAvl( 2, tree ); drawAvlTree( tree ); tree = insertAvl( 1, tree ); drawAvlTree( tree ); tree = insertAvl( 4, tree ); drawAvlTree( tree ); tree = insertAvl( 5, tree ); drawAvlTree( tree ); tree = insertAvl( 6, tree ); drawAvlTree( tree ); tree = insertAvl( 7, tree ); drawAvlTree( tree ); tree = insertAvl( 12, tree ); drawAvlTree( tree ); tree = insertAvl( 11, tree ); drawAvlTree( tree ); tree = insertAvl( 10, tree ); drawAvlTree( tree ); tree = insertAvl( 8, tree ); drawAvlTree( tree ); tree = insertAvl( 9, tree ); drawAvlTree( tree ); tree = deleteAvl( 12, tree ); drawAvlTree( tree ); tree = deleteAvl( 8, tree ); drawAvlTree( tree ); tree = deleteAvl( 4, tree ); drawAvlTree( tree ); tree = deleteAvl( 6, tree ); drawAvlTree( tree ); tree = deleteAvl( 5, tree ); drawAvlTree( tree ); tree = deleteAvl( 7, tree ); drawAvlTree( tree ); tree = deleteAvl( 9, tree ); drawAvlTree( tree ); tree = deleteAvl( 10, tree ); drawAvlTree( tree ); tree = deleteAvl( 11, tree ); drawAvlTree( tree ); tree = deleteAvl( 3, tree ); drawAvlTree( tree ); tree = deleteAvl( 2, tree ); drawAvlTree( tree ); tree = deleteAvl( 1, tree ); drawAvlTree( tree ); */ for ( i = 1; i < 32; i++ ) { tree = insertAvl( rand()*99/RAND_MAX + 1, tree ); drawAvlTree( tree ); } printAvlTree( tree ); }
相关文章推荐
- 纯C语言实现的AVL树(插入&删除&前序遍历输出)
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- [原]C语言实现双向链表删除节点、插入节点、双向输出等操作
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- c语言中实现从0-1的随机数输出
- AVL树的旋转、插入、删除及遍历C语言实现
- AVL树插入例程非递归实现C语言
- 链表的建立,输出,删除,插入运算的c语言实现
- [转载]C语言随机输出1~20不重复的随机数
- 【碎片知识(2)· C语言】链表的建立、输出、特定点的删除和插入以及malloc函数的应用
- C语言 - ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- c语言练习题 模拟n个人参加选举的过程,四个 候选人A、B、C、D。若选举某人直接 输入其编号,最后按获得票数从高到 低排序并输出候选人编号和票数。
- [转载]C语言随机输出1~20不重复的随机数
- 输出直接插入排序每趟比较的过程
- 在存储过程中取得刚刚插入的记录的某个字段,将其输出,由C#接受OUTPUT返回参数
- (C语言) AVL树 - 自平衡二叉树:插入、删除
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表