python实现二叉树

递归实现二叉树

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         #遍历右子节点
posted @   D_WWW  阅读(132)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示