⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitree.asm

📁 汇编实现二叉树遍历,数据结构的前中后序遍历
💻 ASM
字号:
;***********************************************
;COPYRIGHT 2005 wy ALL RIGHTS RESERVED
;CODED BY VITGRESS
;EMAIL VITGRESS@163.COM
;***********************************************
.MODEL SMALL
.STACK	10
.DATA
PRE	DB	33	DUP(' '),'$'		;Define three arrays
INO	DB	33	DUP(' '),'$'		;to store the 
POST	DB	33	DUP(' '),'$'		;three orders
ENT	DB	10,13,'$'
INROOT	DB	'THE ROOT: ','$'
INLEFT	DB	"'S LEFT: ",'$'
INRIGHT	DB	"'S RIGHT: ",'$'
PREORDER	DB	'The preorder  is : ','$'	;The
INORDER		DB	'The inorder   is : ','$'	;output
POSTORDER	DB	'The postorder is : ','$'	;information
.CODE
;=====================================================================
	MAIN	PROC	FAR			;The main procedure
		MOV	AX,@DATA
		MOV	DS,AX

		SUB	DI,DI			;Initialize the DI
		SUB	SI,SI			;Initialize the SI
		SUB	BX,BX			;Initialize the BX
		MOV	AX,23H			;Push a '#' to the 
		PUSH	AX			;bottom of the stack
		MOV	AH,09H			;The prompt
		MOV	DX,OFFSET INROOT	;of input
		INT	21H			;the root
		JMP	INPUT
	MAIN	ENDP
;======================================================================	
	INPUT:					;Input Procedure
		MOV	AH,01H			;Accept the input
		INT	21H
		CMP	AL,13			;If input an enter
		JZ	OUTENTER
		MOV	PRE[DI],AL
		MOV	AH,0
		PUSH	AX
		CALL	ENTER			;Start another row
		MOV	AH,02H
		MOV	DL,PRE[DI]
		INT	21H
		MOV	AH,09H
		MOV	DX,OFFSET INLEFT	;Display the prompt for
		INT	21H			;inputting the 
		INC	DI			;left node
		JMP	INPUT
;=======================================================================
	OUTENTER:
		CALL	ENTER
		JMP	RIGHTINPUT
;=======================================================================
	RIGHTINPUT:				;Input the right node
		POP 	AX
		CMP	AX,23H			;Reach the bottom 
		JZ	OUTPUT			;Start to output
		CMP	AH,0
		JZ	SETINORDER
		MOV	POST[BX],AL		;Store the postorder
		INC	BX
		JMP	RIGHTINPUT
;=======================================================================
	SETINORDER:				;Store the inorder
		MOV	INO[SI],AL
		INC	SI
		MOV	AH,1			;Set the postorder flag
		PUSH	AX
		MOV	AH,02H
		MOV	DL,AL
		INT	21H
		MOV	AH,09H
		MOV	DX,OFFSET INRIGHT	;Display the prompt for
		INT	21H			;inputting  right node
		JMP	INPUT
;=======================================================================
	ENTER	PROC	NEAR			;The Procedure for
		MOV	AH,09H			;start another row
		LEA	DX,ENT
		INT	21H
		RET
	ENTER	ENDP
;=======================================================================
	OUTPUT	:   				;Output Procedure
		CALL	ENTER		
		MOV	AH,09H
		MOV	DX,OFFSET PREORDER	;Preorder
		INT	21H
		MOV	AH,09H
		MOV	DX,OFFSET PRE		
		INT	21H
		CALL	ENTER		
		MOV	AH,09H
		MOV	DX,OFFSET INORDER	;Inorder
		INT	21H
		MOV	AH,09H
		MOV	DX,OFFSET INO		
		INT	21H
		CALL	ENTER		
		MOV	AH,09H
		MOV	DX,OFFSET POSTORDER	;Postorder
		INT	21H
		MOV	AH,09H
		MOV	DX,OFFSET POST		
		INT	21H
		MOV	AX,4C00H		;End processing
		INT	21H
;=======================================================================
		END	MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -