zoukankan      html  css  js  c++  java
  • python 二叉树

    定义:

    class BTree(object):
        def __init__(self, value):
            self.l_child = None
            self.r_child = None
            self.value = value
        def insert_left(self, value):
            bt_node = BTree(value)
            bt_node.l_child = self.l_child
            self.l_child = bt_node
        def insert_right(self, value):
            bt_node = BTree(value)
            bt_node.r_child = self.r_child
            self.r_child = bt_node
    
    def in_order(node, return_list):
        if node:
            in_order(node.l_child, return_list)
            return_list.append(node.value)
            in_order(node.r_child, return_list)
            return return_list
    

    插入节点

    n0 = BTree(0)
    n0.insert_left(1)
    n0.insert_right(2)
    n0.l_child.insert_left(3)
    n0.l_child.insert_right(4)
    n0.r_child.insert_left(5)
    n0.r_child.insert_right(6)
    

    树为:

                0
        1                2
    3        4        5        6
    

    调用中序遍历

    >>> in_order(n0,[])
    [3, 1, 4, 0, 5, 2, 6]
    

    前序遍历

    def pre_order(node, return_list):
    	if node:
    		return_list.append(node.value)
    		pre_order(node.l_child, return_list)
    		pre_order(node.r_child, return_list)
    		return return_list
    
    >>> pre_order(n0,[])
    [0, 1, 3, 4, 2, 5, 6]
    

    后序遍历

    def post_order(node, return_list):
        if node:
            post_order(node.l_child, return_list)
            post_order(node.r_child, return_list)
            return_list.append(node.value)
            return return_list
    
    >>> post_order(n0,[])
    [3, 4, 1, 5, 6, 2, 0]
  • 相关阅读:
    ubuntu安装eclipse配置jdk环境
    ubuntu之使用sublime text3搭建Python IDE
    windows远程控制ubuntu尝试--未成功
    食物链(luogu 2024)
    玉米田Corn Fields(luogu 1879)
    互不侵犯(luogu 1896)
    又是毕业季I(luogu 1372)
    Supermarket
    Network of Schools [USACO5.3]
    最大乘积
  • 原文地址:https://www.cnblogs.com/kramer/p/6062278.html
Copyright © 2011-2022 走看看