Outline:

  1. 二叉树概念
  2. 二叉树遍历(前序、中序、后序、宽度优先遍历)的迭代实现和递归实现;
  3. 二叉树的深度,二叉树到leaf的所有路径。

树(Tree)

是一种抽象数据类型(ADT),是由n(n>=0)个有限节点来模拟的一个具有树状结构性质的数据集合。

二叉树 Binary Tree

  • 至少有一个节点(根节点)
  • 每个节点最多有2棵子树(左右子树)(即每个节点的度小于3)
  • 左子树和右子树是有顺序的,次序不能任意颠倒。
  • 即使树中某节点只有一棵子树,也要区分它是左子树还是右子树。

Python定义二叉树类:

Class 

二叉树分类:

  • 满二叉树
  • 完全二叉树
  • 二叉查找树(Binary Search Tree - BST

二叉查找树

root node的值(5),大于其left subtree中任意一个节点的值,小于其right subtree中任意一节点的值。

【说人话】:以root节点为界,小于root节点的值保存在left节点,大于root节点的值保存在right节点。

  • 任意节点的左、右子树也分别为二叉查找树;
  • 没有键值相等的节点

A binary search tree (BST) is a form of rooted binary tree.

Each node within a binary tree has an associated payload and references to the root node of any right or left subtrees at that point.

Any payload contained within any left subtree must be less than the value of the payload of node N and, conversely, that any payload contained within any right subtree must exceed the value of the payload of node N.


二叉树遍历

二叉树的遍历:

  • 深度优先(DFS: Depth-First Search)
  • 宽度优先(BFS: Breadth-First Search)

其中深度优先遍历又分为:

  • 前序遍历:-左-右
  • 中序遍历:左--右
  • 后序遍历:左-右-

前序遍历root-left-right: 5-3-2-4-7-6

递归

def 

中序遍历:left-root-right : 2-3-4-5-7-6

递归

def 

后序遍历left-right-root: 2-4-3-6-7-5

递归

def 

宽度优先遍历(BFS):自顶向下: 5-3-7-2-4-6

迭代

def 

tinyxml2遍历所有节点_Python实现二叉树的遍历相关推荐

  1. c++ stack 遍历_python实现二叉树的遍历以及其他基本操作

    主要内容: 二叉树遍历(先序.中序.后序.宽度优先遍历)的迭代实现和递归实现: 二叉树的深度,二叉树到叶子节点的所有路径. 首先,先定义二叉树类(python3),代码如下: class 内容1:二叉 ...

  2. php 实现二叉树的最大深度_python实现二叉树的遍历以及其他基本操作

    主要内容: 二叉树遍历(先序.中序.后序.宽度优先遍历)的迭代实现和递归实现: 二叉树的深度,二叉树到叶子节点的所有路径. 首先,先定义二叉树类(python3),代码如下: class TreeNo ...

  3. python 深度优先遍历_Python算法-二叉树深度优先遍历

    二叉树 组成: 1.根节点BinaryTree:root 2.每一个节点,都有左子节点和右子节点(可以为空)TreeNode:value.left.right 二叉树的遍历: 遍历二叉树:深度优先遍历 ...

  4. python 二叉树遍历递归非递归_python实现二叉树递归遍历与非递归遍历

    一.中序遍历 前中后序三种遍历方法对于左右结点的遍历顺序都是一样的(先左后右),唯一不同的就是根节点的出现位置.对于中序遍历来说,根结点的遍历位置在中间. 所以中序遍历的顺序:左中右 1.1 递归实现 ...

  5. java遍历树结构数据_Java数据结构——二叉树的遍历(汇总)

    二叉树的遍历分为深度优先遍历(DFS)和广度优先遍历(BFS) DFS遍历主要有: 前序遍历 中序遍历 后序遍历 一.递归实现DFS Node.java: public class Node { pr ...

  6. 二叉树垂直遍历 java_【004】二叉树垂直遍历

    二叉树垂直遍历 题目描述 输入输出 示例输入 实例输出 DFS BFS 更简单的方法 二叉树垂直遍历 题目描述 对于一个二叉树,输出它的垂直遍历结果:对于同一列的节点,按照从左向右,从上向下的顺序排列 ...

  7. 遍历同辈节点的方法_jquery如何遍历节点

    jquery如何遍历节点 发布时间:2020-11-17 10:02:55 来源:亿速云 阅读:68 作者:小新 这篇文章给大家分享的是有关jquery如何遍历节点的内容.小编觉得挺实用的,因此分享给 ...

  8. python字典遍历 没有顺序_Python实现字典的遍历与排序功能示例

    本文实例讲述了Python实现字典的遍历与排序功能.分享给大家供大家参考,具体如下: 字典的遍历: 首先: items(): 功能:以列表的形式返回字典键值对 eg: dict_={"a&q ...

  9. python 遍历函数用法_python中enumerate函数遍历元素用法分析

    本文实例讲述了python中enumerate函数遍历元素用法.分享给大家供大家参考,具体如下: enumerate函数用于遍历序列中的元素以及它们的下标 示例代码如下: i = 0 seq = [' ...

最新文章

  1. AI会完美的执行我们设定的目标,但这不是一个好消息
  2. BFC(Box Formatting Context)的原理
  3. docker 僵尸进程解决方案 Baseimage-docker,胖容器和“容器也是虚拟机”
  4. python无穷大整数_python的特殊数字类型(无穷大、无穷小等)
  5. S3C6410的IROM启动模式
  6. 2020-12-09 深度学习 卷积神经网络结构分析
  7. 如何设计应用层协议(草稿)
  8. javascript中match方法和exec()方法详解与深度区别(非原创)
  9. devstack安装OpenStack Pike版本 (OVN+VLAN)
  10. KVM虚拟机获取所有IP(shell)
  11. 20165223《网络对抗技术》Exp3 免杀原理与实践
  12. 微信支付宝关闭三星Galaxy指纹支付;乐视网回应贾跃亭破产;Chrome 78发布|极客头条...
  13. python笔记1-准确掌握列表和元组
  14. Gobinet/QMI-WWAN/ppp拨号区别
  15. 如果你的年龄在35~55岁之间,一定要看这张图
  16. SpringBoot学习之文件结构和配置文件
  17. dontshrink解决ProGuard错误:java.lang.StackOverflowError
  18. 今天讲解了WP的新思路
  19. tdoa/aoa定位的扩展卡尔曼滤波定位算法matlab源码,03TDOA_AOA定位的扩展卡尔曼滤波算法MATLAB源代码...
  20. 猴子问题----约瑟夫环算法

热门文章

  1. 2021-08-12 画蜡烛线
  2. 【2022】JVM常见面试真题详解
  3. java swing简介
  4. 时间复杂度的一些计算规则
  5. 深度学习之双线性插值(Bilinear interpolation)
  6. Python 之 进程
  7. git提交 本地分支和远程分支断开连接
  8. C语言信息系统贴吧,急 c语言学生信息管理系统
  9. pytorch resnet50_PyTorch终于能用上谷歌云TPU,推理性能提升4倍,我们该如何薅羊毛?...
  10. 【R】语言第二课----- 变量的使用方法