概念
二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)
性质
性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)
性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)
性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
性质4:具有n个结点的完全二叉树的深度必为 log2(n+1)
性质5:对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号必为2i+1;其双亲的编号必为i/2(i=1 时为根,除外)

分类
1.完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
2.)满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

二叉树Python实现

class Node(object):"""节点类"""def __init__(self, elem=-1, lchild=None, rchild=None):self.elem = elem  # 自身self.lchild = lchild  # 左孩子self.rchild = rchild  # 右孩子
class Tree(object):"""树类"""def __init__(self, root=None):self.root = rootdef add(self, elem):node = Node(elem)if self.root == None:self.root = nodeelse:queue = []queue.append(self.root)  # 先将根节点添加到队列中while queue:  # 遍历树cur = queue.pop(0)  # 首先弹出了根节点if cur.lchild == None:  # 如果没有做孩子的话cur.lchild = node  # 添加nodereturnelif cur.rchild == None:  # 如果没有有孩子的话cur.rchild = nodereturnelse:  # 如果左右子树都不为空,加入队列继续判断queue.append(cur.lchild) queue.append(cur.rchild)

python 二叉树相关推荐

  1. Python二叉树的三种深度优先遍历

    Python二叉树的三种深度优先遍历 一.广度优先遍历和深度优先遍历 对二叉树进行遍历(traversal)是指依次对树中每个节点进行访问,在遍历的过程中实现需要的业务. 对树的遍历方式有广度优先遍历 ...

  2. python 二叉树的序列化和反序列化

    python 二叉树的序列化和反序列化 一.leetcode 297 二.为什么要反序列化? 三.反序列化设计 四.序列化设计 五.leetcode 297题 一.leetcode 297 序列化是将 ...

  3. python二叉树遍历算法_分享python实现的二叉树定义与遍历

    这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下 本文实例讲述了python实现的二叉树定义与 ...

  4. Python二叉树详解笔记

    目录 二叉树数据结构 简介 为何选择树 树的主要应用包括: 二叉树的类型 满二叉树(Full binary tree) 完全二叉树(Complete binary tree) 完美二叉树(Perfec ...

  5. python 二叉树中序遍历

    根据树的递归性,使用List存储下面这棵树,然后编写函数对其进行中序遍历. 递归实现中序遍历列表存储的二叉树 python列表模拟二叉树存放,列表 = [ [左子树] , 根节点 , [右子树] ] ...

  6. python二叉树广度遍历_黄哥Python: 二叉树的广度优先搜索的二种方法

    特别提示,转行的朋友,2019年不学习数据结构和算法,不刷Leetcode 等面试题库,是找不到程序员工作或者说找不到好的工作.黄哥:黄哥Python:提醒要转行当程序员的朋友,学习要分先后主次​zh ...

  7. python 二叉树中所有距离为k的节点_leetcode 二叉树中所有距离为 K 的结点

    二叉树 考点: 递归 + 二叉树遍历 + 调整树根 ** 思路:** 1 先对target做一次层次DFS ,将层次为k的节点加入vector 2 递归调整,将target 调整为新的树根, 3 在对 ...

  8. python二叉树的创建与遍历

    二叉树的基本概念: 一个结点的层次直观上来说就是其所在的行,其中根结点层次为1(第一行),其子结点层次为2(第二行),以此类推 二叉树的深度(高度):指的是二叉树中的最大叶子结点所在的层.二叉树的深度 ...

  9. python二叉树去重_python二叉树学习分享

    介绍:树形结构是应用相当广泛的一种非线性结构,建立与应用大多使用链表来处理,当然也可用连续的列表来实现 常见概念: 满二叉树:如果树高位H,树的结点总数为2*H-1,H>=0,称为满二叉树 完全 ...

最新文章

  1. Spring对事务管理的支持的发展历程(基础篇)
  2. 日常生活中如何获得低咖啡因的茶叶
  3. 多核 linux 绑定,Linux 操作系统下CPU多核心的绑定
  4. SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查
  5. hdu1428漫步校园( 最短路+BFS(优先队列)+记忆化搜索(DFS))
  6. 分布式系统负载均衡策略分析与研究
  7. 伪随机生成器具体实现——ANSI X9.17
  8. 周末北戴河游玩-北京游客
  9. Python基础(二)
  10. (个人翻译)Scrivener交互式手册中文版FowWindows 03基础操作
  11. js 面试题之---数组、字符串操作
  12. 国内外大厂扑向AR-HUD,但抵达“智能汽车终局”仍隔数层纱
  13. 常见设计模式快速记忆
  14. Gitlab回滚到上次提交
  15. NFT Insider #48:The Sandbox发布内测版第二季,FTX Gaming与YGGIndia达成合作
  16. Yotta企业云盘容量与安全兼得
  17. illumina 双末端测序
  18. Android工程师应该具备的四大开发习惯
  19. MySQL集群高可用架构
  20. 丹纳赫集团在中国本土研发并生产的首台流式细胞分选仪正式交付

热门文章

  1. 测试软件是否丢失数据,11种方法检测软件的可靠性
  2. golang:正则表达式匹配网页url_网络爬虫:3种网页抓取方法
  3. Python编程常见出错信息及原因分析(5):安装扩展库
  4. maven项目包导不进去_IntelliJ Idea下Maven插件使用技巧
  5. 5个python标准库及作用_零基础编程——Python标准库使用
  6. python怎么转到下一行_请教:怎样用python读取文件之后,处理在下一行、空行、和*星星?...
  7. java取当前日期_java如何获取系统的当前时间
  8. eclipse maven项目 class类部署不到tomcat下_Springboot介绍以及用Eclipse搭建一个简单的Springboot项目教程
  9. python中index方法详解_详解python中的index函数用法
  10. python做一个linux网卡,Linux系统Python可以选择不同网卡进行网络访问吗?