Search code examples
pythonbinary-tree

Python pre order recursive binary tree traversal


I have this code:

def recursionTravel(node, returnArr = []):
    if node:
        returnArr.append(node.data)
        if node.left: returnArr.append(recursionTravel(node.left, returnArr))
        if node.right: returnArr.append(recursionTravel(node.right, returnArr))
    return node.data

# Pre-order traversal
def pre_order(node):
    output = []
    if node:
        output.append(node.data)
        if node.left: output.append(recursionTravel(node.left))
        if node.right: output.append(recursionTravel(node.right))
    return output

Binary tree consists of Node: [5, 10, 2, 'leaf'] Output should be the same: [5, 10, 2, 'leaf']

Issue: Last element is missing in the return. Return value: [5, 10, 2]


Solution

  • Simply change the last line of recusiveTravel.

    def RecusiveTravel(node, returnArr[]):
      if node:
        returnArr.append(node.data)
        if node.left: returnArr.append(recursionTravel(node.left, returnArr))
        if node.right: returnArr.append(recursionTravel(node.right, returnArr))
        return returnArr
    

    No need for the preOrder function. Just call it from the recusive function. It should work.