美文网首页
python实现二叉树

python实现二叉树

作者: D_w | 来源:发表于2021-08-17 22:15 被阅读0次

递归实现二叉树

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

def create_binary_tree(input_list=[]):
    # 构建二叉树
    if input_list is None or len(input_list) == 0:
        return None
    data = input_list.pop(0)
    if data is None:
        return None
    node = TreeNode(data)
    node.left = create_binary_tree(input_list)
    node.right = create_binary_tree(input_list)
    return node

def pre_order_traversal(node):
    # 前序遍历
    if node is None:
        return
    print(node.data)
    pre_order_traversal(node.left)
    pre_order_traversal(node.right)
    return node

def in_order_traversal(node):
    # 中序遍历
    if node is None:
        return
    in_order_traversal(node.left)
    print(node.data)
    in_order_traversal(node.right)
    return node

def post_order_traversal(node):
    # 后序遍历
    if node is None:
        return
    post_order_traversal(node.left)
    post_order_traversal(node.right)
    print(node.data)
    return node

堆实现二叉树前序遍历

def pre_order_traversal_with_stack(node):
    stack = []      
    while node is not None or len(stack) > 0:
        while node is not None:     # 当前节点或左子节点为空时退出
            print(node.data)
            stack.append(node) # 先将本次遍历到的放到栈中
            node = node.left      # 接下来遍历左子节点
        if len(stack) > 0:    # 左子节点为空且栈内有节点时
            node = stack.pop()        #弹出最后进入的节点
            node = node.right         #遍历右子节点

相关文章

网友评论

      本文标题:python实现二叉树

      本文链接:https://www.haomeiwen.com/subject/pjqwbltx.html