二叉树第一节-三种遍历方式

二叉树 三种遍历方式

  • 二叉树总结:
    因为是采用的链表
    所有有几点总结
    相似之处【上结论】

这是二叉树节点的定义
1.*BTree 是 树节点和普通节点有别 记着 是指针类型 (可以理解为树这个多功能链表)
2.BiNode 是每一个节点

typedef struct BiNode {
	int v;
	struct BiNode *left,*right;
} BiNode,*BTree;

这是简单的二叉树根的定义
1.注意参数
2.节点的定义    

t = (BTree)malloc(sizeof(BiNode));
(BTree): 树
(BiNode) 节点

int initeTree(BTree &t) {
	t = new BiNode;
	t = (BTree)malloc(sizeof(BiNode));
	t->left=NULL;
	t->right=NULL;
	t->v = 1;
	return 1;
}

前序遍历
1.注意参数
2.注意递归顺序

void preOrder (BTree &t) {
	if(t) {
		printf("%d ",t->v);
		preOrder (t->left);
		preOrder(t->right);
	}
	
}
#include<bits/stdc++.h>
#define maxSize 100
typedef struct BiNode {
	int v;
	struct BiNode *left,*right;
} BiNode,*BTree;

int initeTree(BTree &t) { 
	t = (BTree)malloc(sizeof(BiNode));
	t->left=NULL;
	t->right=NULL;
	t->v = 1;
	return 1;
}

//前序遍历
void preOrder (BTree &t) {
	if(t) {
		printf("%d ",t->v);
		preOrder (t->left);
		preOrder(t->right);
	}
	
}

//中序遍历
void midOrder (BTree &t) {
	if(t) {
		midOrder (t->left);
		printf("%d ",t->v);
		midOrder(t->right);
	}
}

//中序遍历
void rearOrder (BTree &t) {
	if(t) {
		rearOrder (t->left);
		rearOrder(t->right);
		printf("%d ",t->v);
	}
}



int main() {
	BTree b;
	int res = initeTree(b);
	printf("构建结果:%d\n",res);
	//自己先手动构造一颗二叉树
	BTree b2 = (BTree)malloc(sizeof(BiNode));
	b2->v = 2;


	BTree b3 = (BTree)malloc(sizeof(BiNode));
	b3->v = 3;

	BTree b4 = (BTree)malloc(sizeof(BiNode));
	b4->v = 4;

	BTree b5 = (BTree)malloc(sizeof(BiNode));
	b5->v = 5;

	BTree b6 = (BTree)malloc(sizeof(BiNode));
	b6->v = 6;

	BTree b7 = (BTree)malloc(sizeof(BiNode));
	b7->v = 7;

	b->left=b2;
	b->right=b3;

	b2->left=b4;
	b2->right=b5;

	b3->left=b6;
	b3->right=NULL;

	b4->left=NULL;
	b4->right=b7;

	b7->left=NULL;
	b7->right=NULL;

	b5->left=NULL;
	b5->right=NULL;

	b6->left=NULL;
	b6->right=NULL;

	b3->left=b6;
	b3->right=NULL;

//	printf("[%d]\n",b->right->left->v);
	preOrder(b);
	printf("\n");
	midOrder(b);
	printf("\n");
	rearOrder(b);
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理想艺术!马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值