首页 > 编程语言 >Python实现完全二叉树

Python实现完全二叉树

时间:2023-11-27 22:35:13浏览次数:37  
标签:__ pre Python tree 完全 二叉树 array data order

给定一个元素序列(如列表),递归的创建一颗完全二叉树

完整代码如下

#! /usr/bin/env python3


class TreeNode:
    """ Node of complete tree"""
    def __init__(self, data=0):
        self.data = data
        self.left = None
        self.right = None


def build(i, array):
    """ Create a compete tree based a given array"""
    if i < len(array):
        tree = TreeNode() 
        tree.data = array[i]
        tree.left = build(2*i + 1, array)
        tree.right = build(2*i + 2, array)
        return tree
    else:
        return None


def in_order(tree):
    """ traversal complete tree in order"""
    if tree != None:
        in_order(tree.left)
        print(tree.data, end=' ')
        in_order(tree.right)


def pre_order(tree):
    """ traversal complete tree pre order"""
    if tree != None:
        print(tree.data, end=' ')
        pre_order(tree.left)
        pre_order(tree.right)


def main():
    t = build(0, [4, 9, 1, 8, 3, 2, 10])
    in_order(t)
    print()
    pre_order(t)
    print()


if __name__ == '__main__':
    main()

程序的运行结果如下

标签:__,pre,Python,tree,完全,二叉树,array,data,order
From: https://www.cnblogs.com/gjsun/p/17860699.html

相关文章

  • 关于python中pip安装库过程中报错的解决办法
    晚上使用flask框架搭建web服务,启动后报错如下:WARNING:Thisisadevelopmentserver.Donotuseitinaproductiondeployment.UseaproductionWSGIserverinstead. 经过搜索大法,发现是因为在开发环境中,Flask应用程序是使用内置的服务器(如SimpleServer或Lighttpd)运......
  • 【Python】Formatter预定义的字段有哪些
    字段描述namelogger名字levelno日志级别数字levelname日志级别字符串pathname打印日志文件路径filename打印日志文件名module模块名lineno日志调用行数funcName日志调用所在函数名created消息创建时的时间对象(time.time())asctime消......
  • 【Python】【OpenCV】Cameo项目(一)实时显示摄像头帧
     Cameo项目介绍:1、实时捕获并显示摄像头帧。2、具备截图、保存视频和退出三个功能键。 要求存在文件:manager.py和cameo.py 一、manager.py两个类:CaptureManager、WindowManager  CaptureManager负责摄像头帧的捕获,编解码得到实际帧,当前帧保存为图片、一段时间内的......
  • C++ vs Python
    WhyC++isfasterthanPythonhttps://www.freecodecamp.org/news/python-vs-c-plus-plus-time-complexity-analysis/SummaryTable编程语言stronglytyped?跨平台语言类型C++YesYes编译型PythonNoYes解释型参考资料stronglytypedprogrammingla......
  • 学习Python相关软件的安装
    学习Python相关软件的安装Typora软件的使用它不是国产软件的,它是国外的,官方网站是国外,在国内下载国外的软件,就会出现下载速度慢的问题#1.下载:https://typoraio.cn/这个软件不是免费使用的,虽然收费但是不贵,很好用!#2.这款软件是支持markdown格式的,是目前使用最为频繁......
  • 学习python的计算机基础
    编程与编程语言1.什么是语言? #语言就是人与人之间交流的媒介2.什么是编程语言呢? #就是人与计算机之间交流的媒介常见的编程语言:Python、Java、Go、PHP、C、C++、C#等3.什么是编程? #编程就是写代码编程就是程序员(码农)使用计算机能够读懂的语言把自己的'......
  • Python股票自动交易从零开始1
    【【公开课】Python股票自动交易从零开始~】https://www.bilibili.com/video/BV1SW411A7Ab?p=6&vd_source=056bd9dc74b57a861c5ac342ecab8bbc1importrequests2importpandas3importio45url='https://www.nasdaq.com/screenering/screeing/companies-by-indu......
  • 离线安装python相关库---以PyKinect2为例
    1、首先下载库的压缩包Kinect/PyKinect2:WrappertoexposeKinectforWindowsv2APIinPython(github.com)2、解压3、打开AnacondaPrompt------激活环境------切换路径到解压文件夹中setup.py所在位置------运行setup.py文件>>activatedemo_env>>cdC:\Users\Admini......
  • 【python入门之pip换源问题】---pip换源的方式
    【一】PIP更换源包【1】问题描述在使用Python时,我们经常需要用到pip安装第三方包。但是,在某些情况下,由于网络速度慢或者其他各种原因,pipinstall会非常慢,甚至可能无法完成。为了解决这个问题,我们提供以下几种方法。「解决方法」【第一种】永久更换pip源一般来说,默认使......
  • 【Python进阶】第6篇:Python的死锁和IP地址详解。总结md文档集合(已分享,附代码)
    本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。全套笔记和代码自取地址:请移步这里感......