[C ++] - matrice est convertie en un arbre binaire

Structure de données a été sur les pauvres, les arbres ont été confus tableau de nœuds et comment est d'un à un, écrire le prochain blog organiser leurs propres idées.

La définition d'un arbre binaire

arbre binaire est une utilisation structurelle très non linéaire, présentant les deux caractéristiques suivantes:

  1. Seule une racine d'arbre binaire non vide
  2. Chaque nœud a au plus deux sous-arbre, les noeuds sont appelés les sous-arborescence gauche et à droite sous-arbre

La nature de l'arbre binaire

1 Propriétés : k-ième couche dans l'arbre binaire, à 2k-1 (k> = 1 ) noeuds
propriétés 2 : m profondeur de l' arbre binaire jusqu'à 2m-1 noeuds
propriétés 3 : Dans une arborescence binaire, lecture pour le noeud ( à savoir, est un noeud de feuille) est meilleure que 0 ° par rapport à une pluralité de noeuds 2
Property 4 : l'arbre binaire a n noeuds et une profondeur d'au moins [log2n] 1, où [log2n] représente la prise entier partie de log2n

Transformé en un réseau ordonné d'étapes binaires:

Comme on le tableau trié [1,2,3,4,5,6,7,8,9] dans un fichier binaire


// - 首先定义每一个节点,每个节点包括自身值,左节点和右节点
struct Node
{
	int data;
	Node* _left;
	Node* _right;
}node;

 //- 采用递归的方法创建二叉树

typedef Node* bitree;
void BuildTree(bitree &T, int*a, int begin, int end)
{
	if (begin > end)
		return;
	int mid = (begin + end) / 2;
	if (T == NULL)  //为当前树的根结点申请空间
	{
		T = (Node*)malloc(sizeof(Node));
		T->data = a[mid];
		T->_left = NULL;
		T->_right = NULL;
	}
	BuildTree(T->_left, a, begin, mid - 1);
	BuildTree(T->_right, a, mid+1, end);
}
Publié 33 articles originaux · louange gagné 13 · vues 1053

Je suppose que tu aimes

Origine blog.csdn.net/Vicky_Cr/article/details/104451216
conseillé
Classement