git @ Cat's Eye Technologies Dipple / master oberon / BinaryTree.mod
master

Tree @master (Download .tar.gz)

BinaryTree.mod @masterraw · history · blame

MODULE BinaryTree;

(*
 * SPDX-FileCopyrightText: Chris Pressey, the original author of this work, has dedicated it to the public domain.
 * For more information, please refer to <https://unlicense.org/>
 * SPDX-License-Identifier: Unlicense
 *)

IMPORT Out;

TYPE
  NodePtr* = POINTER TO Node;
  Node = RECORD
    val: INTEGER;
    left: NodePtr;
    right: NodePtr
  END;

PROCEDURE MakeTree*(val: INTEGER; left: NodePtr; right: NodePtr): NodePtr;
  VAR n: NodePtr;
BEGIN
  NEW(n);
  n^.val := val;
  n^.left := left;
  n^.right := right;
  RETURN n
END MakeTree;

PROCEDURE InOrderTraverse*(n: NodePtr);
BEGIN
  IF n # NIL THEN
    InOrderTraverse(n^.left);
    Out.Int(n.val, 3);
    InOrderTraverse(n^.right);
  END;
END InOrderTraverse;

BEGIN
END BinaryTree.