Binary tree algorithm - for memory

#/usr/bin/env python
# -*- coding:utf-8 -*-

class TreeNode(object):
    def __init__(self,val,left=None,right=None):
        self.val = val
        self.left = left
        self.right = right

class BinaryTree(object):
    def __init__(self,root=None):
        self.root = root

def preOrder(retList,node):
    if node != None:
        retList.append(node)
        preOrder(retList,node.left)
        preOrder (retList, node.right)
    return retList

def inOrder(retList,node):
    if node != None:
        inOrder(retList,node.left)
        retList.append(node)
        inOrder(retList,node.right)        
    return retList

def postOrder (retList, node):
    if node != None:
        postOrder(retList,node.left)
        postOrder (retList, node.right)
        retList.append(node)
    return retList


if __name__ == "__main__":
    print("====Binary tree line traversal start====")
    rootNode = TreeNode(11)
    rootNode.left = TreeNode(9,left=TreeNode(6,left=TreeNode(3),right=TreeNode(8)),right=TreeNode(10)
    rootNode.right = TreeNode(17,left=TreeNode(12),right=TreeNode(19))
    bTree = BinaryTree(rootNode)
    ret = preOrder([],bTree.root)
    for i in ret:
        print(i.val),
    print("====End of preorder traversal====")

    ret = inOrder ([], bTree.root)
    for i in ret:
        print(i.val),
    print("====End of inorder traversal====")    

    ret = postOrder ([], bTree.root)
    for i in ret:
        print(i.val),
    print("====End of postorder traversal====")        

  Save for better memory

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324772405&siteId=291194637