|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Débutant
Inscription : avril 2002 Messages : 43 ![]() |
je cherche un algo pour déplacer une branche de mon arbre intervallaire mais je ne trouve pas . Je crois que ce qu'il faut c'est une insertion au préhalable pour ensuite faire une suppression mais il y a quelques soucis qui sont dur à expliquer , si quelqu'un a déjà réalisé une telle fonction , peut il m'aider ???
MERCI parcque là mon cerveau ne tourne plus rond depuis le temps que je cherche... |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Salut,
je veut bien t'envoyer la procédure adéquate, mais en mail privé. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : juillet 2005 Messages : 1 ![]() |
Citation:
Dans mon interface j'ai des fleches de classement, permettant de tasser une branche de 1 position vers la gauche ou vers la droite sur le même niveau... Evidemment, l'ordre des noeuds déjà a la toute gauche ou déjà à la toute droite ne peuvent pas être modifié vers ces cotés... Donc l'idee c'est de prendre les deux intervalles de chaque élément de la branche de droite à tasser vers la gauche et a leur soustraire le nombre d'élément multiplié par 2, présent dans l'arbre de gauche et de faire le contraire de prendre les deux intervalles de chaque élément de la branche de gauche à tasser vers la droite et a leur additionner le nombre d'élément multiplié par 2, présent dans l'arbre de droite Pour éviter le chevauchement de valeur, je commence de droite vers gauche... auquel j'enleve la valeur de 100000 (si vos intervalles dépassent le million, alors ajouter quelques "0" a ce chiffre) aux intervalles de facon a obtenir des valeurs négatives... puis je fais de gauche a droite et dans un troisieme temps j'ajoute un million au valeur negative pour les rappatrier dans le pool exact d'intervalles. J'ai utilisé l'algo suivant pour ordonner de gauche vers la droite... pour la colonne de droite [Nbr_BG_F est le nombre d'élément présent dans la colonne de gauche, J'ai ajouté un -1000000 pour "sortir" temporairement les donnees du set de data modifiable] "Update data Set NFM_BG = (NFM_BG-"&(Nbr_BG_F*2)&")-1000000, NFM_BD = (NFM_BD-"&(Nbr_BG_F*2)&")-1000000 where NFM_BG>="&NFM_BG&" and NFM_BD<="&NFM_BD Pour la colonne de gauche [Nbr_BD_F est le nombre d'élément présent dans la colonne de Droite, NFM_BG_F et NFM_BD_F sont les intervalles utilisé par la racine de l'intervalle de gauche] "Update data Set NFM_BG = (NFM_BG+"&(Nbr_BD_F*2)&"), NFM_BD = (NFM_BD+"&(Nbr_BD_F*2)&") where NFM_BG>="&NFM_BG_F&" and NFM_BD<="&NFM_BD_F Et la transformation finale de la colonne de droite "Update data Set NFM_BG = NFM_BG+1000000, NFM_BD = NFM_BD+1000000 where NFM_BG<0" Ont peut trouver les intervalles utilisé par la racine de l'intervalle de l'arbre de gauche en cherchant la donnee dont l'intervalle de droite est egale a (l'intervalle de gauche - 1) de notre donnee cible (l'arbre de droite) .... Je me relis présentement, et je ne me trouve pas tres clair, mais l'essentiel a retenir c'est qu'il faut modifier les intervalles de la branche de gauche en aditionnant a ses intervalles le (nbr d'élément dans l'arbre de droite*2) et vice-versa pour la branche de droite (en soustrayant bien sur le nbr d'élément présent dans l'arbre de gauche*2) |
|
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() ![]() Hervé Inscription : octobre 2003 Messages : 858 ![]() |
tu parles d'une procédure qui te permet de déplacer un sous arbre dans un arbre intervallaire. je cherche à faire cette fontion mais je n'y arrive pas. Pourrais-tu m'aider ?
Merci d'avance. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com