; Calcule et affiche la somme des valeurs des noeuds de l' arbre nA main: LDX nA,i CALL sum STA out,d DECO out,d STOP out: .BLOCK 2 ; #2d ; ; Structure d'un noeud de l' arbre binaire nA nVal: .EQUATE 0 ; #2d valeur du noeud nLft: .EQUATE 2 ; #2h sous - arbre gauche (0 pour null ) nRht: .EQUATE 4 ; #2h sous - arbre droit (0 pour null ) ; ; Les noeuds de l' arbre nA nA: .WORD 1 .ADDRSS nB .ADDRSS nD nB: .WORD 2 .WORD 0 .ADDRSS nC nC: .WORD 4 .WORD 0 .WORD 0 nD: .WORD 3 .ADDRSS nE .WORD 0 nE: .WORD 5 .WORD 0 .WORD 0 ; ; sum: Somme récursive de la valeur des noeuds d'un arbre binaire . ; IN: X= Adresse du noeud racine (0 si pas de noeud racine ) ; OUT: A= Somme des valeurs ( par convention , 0 est retourné si X ==0) sum: LDA 0,i CALL asum RET0 ; ; asum : Accumule dans A la somme récursive des valeurs des noeuds ; Ce sous - programme est utilisé pour implémenter `sum ` ; IN: A= Valeur initialle ; X= Adresse du noeud courant (0 si pas de noeud courant ) ; OUT: A= Somme accumulée asum: SUBSP 2,i ; #asx STX asx,s CPX 0,i BRNE asx_cont BR asx_fin asx_cont:ADDA nVal,x LDX nLft,x CALL asum LDX asx,s LDX nRht,x CALL asum asx_fin: RET2 ; #asx asx: .EQUATE 0 ; #2h .END