复习-数据结构-二叉树

1. 二叉树数据结构
typedef struct TreeNode{
	int value;
	struct TreeNode* leftChild;
	struct TreeNode* rightChild;
}BiTNode, BiTree;
2. 创建二叉树
// 递归创建
void CreateBiTree(BiTree & T) {
	int value = getData(); // 获取数据
	BiTNode* T;
	if (! T = (BiTNode*)malloc(sizeof(BiTNode))) {
		exit(0);
	}
	else {
		T->value = value;
		CreateBiTree(T->leftChild);
		CreateBiTree(T->rightChild);
	}
}
3. 遍历二叉树

关键在于递归

  1. 先序遍历
void PreOrderVisit(BiTree T){
	if (T != NULL) {
		printf("%d ", T.value);
		PreOrderVisit(T->leftChild);
		PreOrderVisit(T->rightChild);
	}
}
  1. 中序遍历
void InOrderVisit(BiTree T){
	if (T != NULL) {
		PreOrderVisit(T->leftChild);
		printf("%d ", T.value);
		PreOrderVisit(T->rightChild);
	}
}
  1. 后序遍历
void PreOrderVisit(BiTree T){
	if (T != NULL) {
		PreOrderVisit(T->leftChild);
		PreOrderVisit(T->rightChild);
		printf("%d ", T.value);
	}
}
4. 树的存储结构
  1. 双亲表示法
typedef struct PTNode{
	int value;
	int parent;	//双亲位置域
}PTNode;

typedef struct {
	PTNode nodes[size];
	int i, n;	// 根的位置和节点数
}

在这里插入图片描述
2. 孩子表示法

typedef struct CTNode{		// 子节点
	int child;
	struct CTNode* next;
} * ChildPtr;

typedef struct {
	int value;
	ChildPtr firstChild;	// 孩子链表指针头结点
}CTBox;

typedef struct {
	CTBox nodes[size];
	int n, r;				// 节点数和根的位置
}CTree;
  1. 孩子兄弟表示法
typedef struct CSNode{
	int value;
	struct CSNode * firstChild, *nextsibling;
}CSChild, *CSTree;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值