|
| 1 | +*&---------------------------------------------------------------------* |
| 2 | +*& Report Z_LC_BINARY_TREE |
| 3 | +*&---------------------------------------------------------------------* |
| 4 | +*& |
| 5 | +*&---------------------------------------------------------------------* |
| 6 | +REPORT z_lc_binary_tree. |
| 7 | + |
| 8 | + |
| 9 | +TYPES: BEGIN OF ty_binarybtree, |
| 10 | + value TYPE i, |
| 11 | + left TYPE REF TO data, |
| 12 | + right TYPE REF TO data, |
| 13 | + END OF ty_binarybtree. |
| 14 | + |
| 15 | +TYPES: lty_i TYPE STANDARD TABLE OF i WITH EMPTY KEY . |
| 16 | + |
| 17 | +DATA: btree TYPE ty_binarybtree. |
| 18 | + |
| 19 | + |
| 20 | +START-OF-SELECTION. |
| 21 | + |
| 22 | + DATA(lt_values) = VALUE lty_i( ( 2 ) ( 1 ) ( 3 ) ( 6 ) ( 9 ) ( 5 ) ) . |
| 23 | + |
| 24 | + |
| 25 | + LOOP AT lt_values INTO DATA(ls_values). |
| 26 | + |
| 27 | + PERFORM add_value USING btree ls_values. |
| 28 | + |
| 29 | + ENDLOOP. |
| 30 | + |
| 31 | + |
| 32 | + SKIP. |
| 33 | + WRITE:/ 'Binary btree List '. |
| 34 | + WRITE:/ '======================'. |
| 35 | + SKIP. |
| 36 | + |
| 37 | + PERFORM print_value USING btree. |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | +*&---------------------------------------------------------------------* |
| 43 | +*& Form add_value |
| 44 | +*&---------------------------------------------------------------------* |
| 45 | +*& text |
| 46 | +*&---------------------------------------------------------------------* |
| 47 | +*& --> BTREE |
| 48 | +*& --> LS_VALUE |
| 49 | +*&---------------------------------------------------------------------* |
| 50 | +FORM add_value USING btree TYPE ty_binarybtree |
| 51 | + val TYPE i. |
| 52 | + |
| 53 | + FIELD-SYMBOLS: <lbtree> TYPE ty_binarybtree. |
| 54 | + DATA: work TYPE ty_binarybtree. |
| 55 | + |
| 56 | + IF btree IS INITIAL. |
| 57 | + |
| 58 | + btree-value = val. |
| 59 | + CLEAR: btree-left, btree-right. |
| 60 | + CREATE DATA btree-left TYPE ty_binarybtree. |
| 61 | + CREATE DATA btree-right TYPE ty_binarybtree. |
| 62 | + |
| 63 | + ELSE. |
| 64 | + |
| 65 | + IF val LE btree-value. |
| 66 | + |
| 67 | + ASSIGN btree-left->* TO <lbtree>. |
| 68 | + PERFORM add_value USING <lbtree> val . |
| 69 | + ELSE. |
| 70 | + ASSIGN btree-right->* TO <lbtree>. |
| 71 | + PERFORM add_value USING <lbtree> val . |
| 72 | + |
| 73 | + ENDIF. |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | + |
| 78 | + ENDIF. |
| 79 | + |
| 80 | +ENDFORM. |
| 81 | +*&---------------------------------------------------------------------* |
| 82 | +*& Form print_value |
| 83 | +*&---------------------------------------------------------------------* |
| 84 | +*& text |
| 85 | +*&---------------------------------------------------------------------* |
| 86 | +*& --> BTREE |
| 87 | +*&---------------------------------------------------------------------* |
| 88 | +FORM print_value USING btree TYPE ty_binarybtree. |
| 89 | + |
| 90 | + FIELD-SYMBOLS: <bintree> TYPE any. |
| 91 | + |
| 92 | + IF btree IS NOT INITIAL. |
| 93 | + |
| 94 | + ASSIGN btree-left->* TO <bintree>. |
| 95 | + PERFORM print_value USING <bintree>. |
| 96 | + |
| 97 | + WRITE: btree-value. |
| 98 | + |
| 99 | + ASSIGN btree-right->* TO <bintree>. |
| 100 | + PERFORM print_value USING <bintree>. |
| 101 | + |
| 102 | + ENDIF. |
| 103 | + |
| 104 | + |
| 105 | +ENDFORM. |
0 commit comments