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:
- Seule une racine d'arbre binaire non vide
- 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);
}