二叉树的前、中、后序遍历——python实现

1. 先验知识

在这里插入图片描述
在这里插入图片描述

2. 如何创建一棵二叉树

class BinaryTree:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

    def get(self):
        return self.data

    def getLeft(self):
        return self.left

    def getRight(self):
        return self.right

    def setLeft(self, node):
        self.left = node

    def setRight(self, node):
        self.right = node

# 内嵌的调用树
binaryTree = BinaryTree(0) # 根节点
binaryTree.setLeft(BinaryTree(1)) # 设置根节点的左节点
binaryTree.setRight(BinaryTree(2)) # 设置根节点的右节点
binaryTree.getLeft().setLeft(BinaryTree(3)) # 进入根节点的左节点,然后创建左节点
binaryTree.getLeft().setRight(BinaryTree(4))
binaryTree.getRight().setLeft(BinaryTree(5))
binaryTree.getRight().setRight(BinaryTree(6))

在这里插入图片描述
在这里插入图片描述

def preorderTraversal(now, result=[]):
    if now == None:
        return result
    result.append(now.data)
    preorderTraversal(now.left, result)
    preorderTraversal(now.right, result)
    return result


print(preorderTraversal(binaryTree))

# result
# [0, 1, 3, 4, 2, 5, 6]

在这里插入图片描述

def intermediateTraversal(now, result=[]):
    if now == None:
        return result
    intermediateTraversal(now.left, result)
    result.append(now.data)
    intermediateTraversal(now.right, result)
    return result


print(intermediateTraversal(binaryTree))
# result
# [3, 1, 4, 0, 5, 2, 6]

在这里插入图片描述

def postorderTraversal(now, result=[]):
    if now == None:
        return
    postorderTraversal(now.left, result)
    postorderTraversal(now.right, result)
    result.append(now.data)
    return result

print(postorderTraversal(binaryTree))
# result 
# [3, 4, 1, 5, 6, 2, 0]

猜你喜欢

转载自blog.csdn.net/weixin_44441131/article/details/106482746