📄 tree_link.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 + -