本文总阅读量

树的定义

image.png|400

树的基本概念

树的存储结构

父亲表示法

结构体写法

const int m = 10;
struct node{
	int data,father;
}tree[m];

数组写法

const int m = 10;
int data[m],father[m];

结构体都可以拆成数组写法,但用结构体表达更清晰。

孩子表示法

结构体写法
一个变量保存节点的值,一个数组保存孩子的位置。

const int m = 10;
struct node{
	int data,child[m];
}tree[MAXN];  //假设有MAXN个节点

假设有n个节点,每个节点告诉你:data,节点数kk个孩子节点编号(位置),那么读入方式如下:

#include<bits/stdc++.h>
using namespace std;
const int m= 10;
struct node{
	int data,child[m];
}tree[15];
int cnt,n;
int main()
{	
	cin>>n;
	for(int i = 1; i <= n; i++){  //假设按节点编号1到n给出
		int data,k;
		cin>>data>>k;
		tree[++cnt].data = data;
		for(int j = 1; j <= k; j++){
			int y;
			cin>>y;
			tree[cnt].child[j] = y;
		}	
	}
	return 0;
 } 

父亲孩子表示法

一个变量保存节点的值,一个变量保存父亲位置,一个数组保存孩子位置。

const int m = 10;
struct node{
	int data,father,child[m];
}tree[15];

因为节点编号是唯一的,所以可以用数组来模拟树型结构,节点间的联系用变量或数组来保存。


课后习题

二叉树储存和遍历/1826-找树根和孩子


本站总访问量