zoukankan      html  css  js  c++  java
  • python list 转二叉树 及遍历

    from __future__ import annotations
    
    from typing import Union
    from collections import deque
    
    
    class TreeNode:
        def __init__(self, value, l_node: TreeNode = None, r_node: TreeNode = None):
            self.value = value
            self.l_node = l_node
            self.r_node = r_node
    
    
    def gen_tree(values: list) -> Union[TreeNode, None]:
        if not values:
            return None
        iter_value = iter(values)
        root = TreeNode(next(iter_value))
        d = deque()
        d.append(root)
        while 1:
            head = d.popleft()
            try:
                head.l_node = TreeNode(next(iter_value))
                d.append(head.l_node)
                head.r_node = TreeNode(next(iter_value))
                d.append(head.r_node)
            except StopIteration:
                break
        return root
    
    
    def pre_traverse_tree(node: TreeNode):
        if node is None:
            return
        yield node.value
        yield from pre_traverse_tree(node.l_node)
        yield from pre_traverse_tree(node.r_node)
    
    
    def in_traverse_tree(node: TreeNode):
        if node is None:
            return
        yield from pre_traverse_tree(node.l_node)
        yield node.value
        yield from pre_traverse_tree(node.r_node)
    
    
    def post_traverse_tree(node: TreeNode):
        if node is None:
            return
        yield from pre_traverse_tree(node.l_node)
        yield from pre_traverse_tree(node.r_node)
        yield node.value
    
    
    tree = gen_tree(list(range(10)))
    print(list(pre_traverse_tree(tree)))
    print(list(in_traverse_tree(tree)))
    print(list(post_traverse_tree(tree)))
    
    
    
  • 相关阅读:
    DDL、DML、TCL
    SQL简介
    Java基础--常用API--IO流相关API
    Java基础--多线程
    Java基础--常用API--集合类相关API
    Java基础--常用API--日期相关API
    Java基础--常用API--字符串相关API
    Java基础--正则表达式的规则
    Java基础--常用API--java.lang.Object
    26、springboot——整合JPA
  • 原文地址:https://www.cnblogs.com/twotigers/p/11739741.html
Copyright © 2011-2022 走看看