二叉树的左,右视图(python)实现

前面以及说了二叉树的创建以及先序,中序,后序,层次遍历的方法,见本文,下面我们来说说实现二叉树的左,右视图。
把至于左右视图是什么,我想小学生都懂,下面直接上案例:

                a

            b        c

        #    e   f     #
        
     #   # g  h #  # #   #

如上面的二叉树,左视图应该为a,b,e,g;右视图应该为a,c f,h。
那怎样代码实现呢,其实相当简单,只需要在之前的层次遍历的方法上稍微做修改就可以了。
在层次遍历中,左视图只要取每层的第一个节点的值,右视图只要取出每层最后一个结点即可,注,按照上面的树建立的话,就是第一个或最后一个非“#”结点,“#”表示空节点。
那么,下面就来实现:
实现左视图:

# 定义二叉树的结点
class binary_tree_node():
    #初始化
    def __init__(self,data):
        self.data = data
        self.left = None
        self.right = None

    def has_value(self,value):
        if self.data == value:
            return True
        else:
            return False

# 定义二叉树
class binary_tree():
    #初始化
    def __init__(self):
        self.root = None

    #创建树
    def add_node(self,new_node):
        #判断新添加结点是否为二叉树结点对象,如果是,进行添加操作,如果不是,转化为二叉树结点对象再进行添加操作
        if not isinstance
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二叉树期权定价模型是一种常用的期权定价方法,其基本思想是用二叉树模拟期权价格的变化过程。Python中可以使用numpy库来实现二叉树期权定价模型,以下是一个简单的实现代码(以欧式看涨期权为例): ```python import numpy as np def binomial_tree(S, K, T, r, sigma, N): # S: 标的资产当前价格 # K: 期权行权价格 # T: 期权到期时间 # r: 无风险利率 # sigma: 标的资产波动率 # N: 二叉树期数 delta_t = T / N # 时间间隔 u = np.exp(sigma * np.sqrt(delta_t)) # 上涨因子 d = 1 / u # 下跌因子 p = (np.exp(r * delta_t) - d) / (u - d) # 上涨概率 # 构建二叉树 stock_price = np.zeros((N+1, N+1)) option_price = np.zeros((N+1, N+1)) stock_price[0,0] = S for i in range(1, N+1): stock_price[i,0] = stock_price[i-1,0] * u for j in range(1, i+1): stock_price[i,j] = stock_price[i-1,j-1] * d # 计算期权价格 for j in range(N+1): option_price[N,j] = max(stock_price[N,j] - K, 0) for i in range(N-1, -1, -1): for j in range(i+1): option_price[i,j] = np.exp(-r * delta_t) * (p * option_price[i+1,j] + (1-p) * option_price[i+1,j+1]) return option_price[0,0] ``` 这个实现中,我们首先计算出每个时间间隔的上涨因子、下跌因子和上涨概率。然后根据这些因子构建出二叉树,并计算出每个节点的标的资产价格。接着,我们从期权到期日开始,逐步向前计算每个节点的期权价格,最终得到欧式看涨期权的价格。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值