Skip to content

Fix incorrect recursive calls in inOrder() and postOrder() in BinaryTree.java #1633

Description

@gopal5587

In lectures/20-trees/code/introduction/BinaryTree.java, the traversal methods for inOrder() and postOrder() appear to contain copy-paste mistakes.

Problem

Both traversal helpers call preOrder(...) instead of their own traversal method:

  • inOrder(Node node) calls preOrder(node.left) and preOrder(node.right)
  • postOrder(Node node) calls preOrder(node.left) and preOrder(node.right)

Also, the public wrapper methods currently call preOrder(root) instead of the matching helper methods.

Expected behavior

  • inOrder() should call inOrder(root)
  • postOrder() should call postOrder(root)
  • inOrder(Node node) should recursively call inOrder(...)
  • postOrder(Node node) should recursively call postOrder(...)

Suggested fix

public void inOrder() {
  inOrder(root);
}

private void inOrder(Node node) {
  if (node == null) {
    return;
  }
  inOrder(node.left);
  System.out.print(node.value + " ");
  inOrder(node.right);
}

public void postOrder() {
  postOrder(root);
}

private void postOrder(Node node) {
  if (node == null) {
    return;
  }
  postOrder(node.left);
  postOrder(node.right);
  System.out.print(node.value + " ");
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions