一级指针先序建立二叉树
#include <stdio.h>
#include<malloc.h>
/*节点结构*/
typedef struct node
{
int data;
struct node* leftchild, * rightchild;
}Bitree;
Bitree * create()//一级指针先序建立二叉树
{
Bitree *T;
int a;
scanf("%d", &a);
if (a == -1)
T= NULL;
else
{
(T) = (Bitree*)malloc(sizeof(Bitree));
(T)->data = a;
T->leftchild=create();
T->rightchild=create();
}
return T;
}
void xian(Bitree* T)//先序遍历二叉树
{
if (T)
{
printf("%d ", T->data);
xian(T->leftchild);
xian(T->rightchild);
}
}
int main() {
printf("输入:");
Bitree *T;//定义二叉树根节点指针
T=create();//创建二叉树
printf("输出:");
xian(T);//先序遍历二叉树
}
测试结果:
二级指针先序建立二叉树
#include <stdio.h>
#include<malloc.h>
/*节点结构*/
typedef struct node
{
int data;
struct node* leftchild, * rightchild;
}Bitree;
void create(Bitree** T)//二级指针先序建立二叉树
{
int a;
scanf("%d", &a);
if (a == -1)
(*T) = NULL;
else
{
(*T) = (Bitree*)malloc(sizeof(Bitree));
(*T)->data = a;
create(&(*T)->leftchild);
create(&(*T)->rightchild);
}
}
void xian(Bitree* T)//先序遍历二叉树
{
if (T)
{
printf("%d ", T->data);
xian(T->leftchild);
xian(T->rightchild);
}
}
int main(){
printf("输入:");
Bitree *T;//定义二叉树根节点指针
create(&T);//创建二叉树
printf("输出:");
xian(T);//先序遍历二叉树
}
测试结果:
引用方式先序建立二叉树
#include <stdio.h>
#include<malloc.h>
/*节点结构*/
typedef struct node
{
int data;
struct node* leftchild, * rightchild;
}Bitree;
void create(Bitree* &T)//引用方式先序建立二叉树
{
int a;
scanf("%d", &a);
if (a == -1)
T= NULL;
else
{
(T) = (Bitree*)malloc(sizeof(Bitree));
(T)->data = a;
create((T)->leftchild);
create((T)->rightchild);
}
}
void xian(Bitree* T)//先序遍历二叉树
{
if (T)
{
printf("%d ", T->data);
xian(T->leftchild);
xian(T->rightchild);
}
}
int main(){
printf("输入:");
Bitree *T;//定义二叉树根节点指针
create(T);//创建二叉树
printf("输出:");
xian(T);//先序遍历二叉树
}
测试结果: