⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree_link.cpp

📁 二叉树的各种操作
💻 CPP
字号:
/*=========================Programme Description==========================*/
/*程序名称:Tree_Link.c                                                    */
/*程序目的:以链接的方式建立二叉树                                         */
/*Written By:Wang Qiang.                                                  */
/*========================================================================*/
#include<stdio.h>
#include<stdlib.h>

struct tree //声明树的结构
{
	struct tree *left;
	int data;
	struct tree *right;
};

typedef struct tree treenode; //新类型树结构
typedef treenode * b_tree;
b_tree btree;

/*-------------------------------------------*/
/*插入二叉树的节点                           */
/*-------------------------------------------*/

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->right=NULL;
	newnode->left=NULL;

	if( root == NULL)
		return newnode;
	else
	{
		currentnode=root;
		while(currentnode!=NULL) //直到currentnode=NULL
		{
			parentnode=currentnode; //在currentnode改变之前先将他赋予parentnode
			if ( currentnode->data > node)
				currentnode=currentnode->left; //左子树
			else
				currentnode=currentnode->right;//右子树
		}//while

		if (parentnode->data>node)
			parentnode->left=newnode;
		else
		    parentnode->right=newnode;
	}//else
	return root;
}//insert_node

/*---------------------------------------------------*/
/*建立二叉树                                         */
/*---------------------------------------------------*/

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_btree(b_tree root)
{
	b_tree pointer;

	pointer=root->left;
	printf(" Print left_subtree node of root:\n");
	while(pointer !=NULL)
	{
		printf("[%2d]\n",pointer->data);
		pointer=pointer->left;
	}

	pointer=root->right;
	printf("Print right_subtree  of root:\n");
	while(pointer!=NULL)
	{
		printf("[%2d]\n",pointer->data);
		pointer=pointer->right;
	}
}

/*---------------------------------------------------*/
/*主程序:输入元素,建立链表二叉树,并输出二叉树的内容  */
/*---------------------------------------------------*/
void main()
{
	b_tree root=NULL;
	int i,index;
	int data;
	int nodelist[20];

	printf("\nPlease input the elements of the binary tree(Exit for 0):\n");
	index=0;

	/*--------------------读取数值到数组中------------------*/
    scanf("%d",&data);

    while(data !=0)
	{
		nodelist[index]=data;
	    index=index+1;
	    scanf("%d",&data);
	}

	/*------------------建立二叉树-------------------------*/
	root=create_btree(nodelist,index);

	/*------------------打印二叉树的内容-------------------*/
    print_btree(root);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -