用python实现树这种数据结构,可用于实现二叉树或N叉树。

一、定义数据结构

class Node():# 初始化一个节点def __init__(self,val = None):self.val = val       # 节点值self.l_child = []    # 子节点列表# 添加子节点def add_child(self,node):self.l_child.append(node)

二、初始化数据

  示例数据如图所示

root = Node('A')
B = Node('B')
root.add_child(B)
root.add_child(Node('C'))
D = Node('D')
root.add_child(D)
B.add_child(Node('E'))
B.add_child(Node('F'))
B.add_child(Node('G'))
D.add_child(Node('H'))
D.add_child(Node('I'))

三、遍历方法

二叉树:
  前序遍历
  后序遍历
  层次遍历
  中序遍历
N叉树:
  前序遍历 ABEFGCDHI
  后序遍历 EFGBCHIDA
  层次遍历
其中,每种遍历方式都有两种实现方式(递归和非递归)

3.1前序遍历

res = ''def pre(tn):global resif not tn:returnres += tn.valfor i in tn.l_child:pre(i)return(res)pre(root)
print(res)

3.2后序遍历

res = ''def post(tn):global resif not tn:returnfor i in tn.l_child:post(i)res += tn.valreturn(res)post(root)
print(res)

python N叉树相关推荐

  1. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  2. Python递归生成多叉树结构之treelib

    Python 多叉树结构之treelib 官方文档和源码 https://treelib.readthedocs.io/en/latest/index.html https://github.com/ ...

  3. 二叉树的前序、中序、后序非递归遍历 python实现

    前言 python中二叉树的定义: class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None ...

  4. 【LeetCode】二叉树的最大深度

    给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,15,7,null,null], ...

  5. python实现三叉树_使用python代码实现三叉搜索树高效率”自动输入提示”功能

    最近项目中需要通过全拼音和简写拼音实现输入自动提示结果功能,查了一些资料发现三叉搜索树无论是在时间还是空间上都比较优秀. 三叉搜索树是trie树的演化版,除去了指针,这样在空间上节省不少,每个节点基本 ...

  6. python最短路径例子_Python实现的多叉树寻找最短路径算法示例

    本文实例讲述了Python实现的多叉树寻找最短路径算法.分享给大家供大家参考,具体如下: 多叉树的最短路径: 思想: 传入start 和 end 两个 目标值 1 找到从根节点到目标节点的路径 2 从 ...

  7. Python Tree库绘制多叉树的用法介绍

    Python Tree库绘制多叉树的用法介绍 Tree 库是一个 Python 的第三方库.这个库主要用于生成树和绘制树的图形. 一.安装Tree pip install Tree 使用 Tree 库 ...

  8. Python treelib库创建多叉树的用法介绍

    Python treelib库创建多叉树的用法介绍 treelib 库是一个 Python 的第三方库.这个库实现了一些多叉树相关的常用方法. 一.安装treelib pip install tree ...

  9. python求多叉树任意两点之间的距离

    对于多叉树求两点之间的距离,最难的地方在于有没有思路,如何找到指定点的位置,以及如何去计算两个指定点之间的距离,下图是一个简单的的多叉树,从5到1的距离为2,从5到7的距离为4. 我们可以将求解两点之 ...

最新文章

  1. bigdecimal 和负数比较_Java中BigDecimal精度和相等比较的坑
  2. 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come
  3. 分析Java核心转储
  4. Codeforces 977D: Divide by three, multiply by two(暴力)
  5. Openstack平台搭建之第二天
  6. 基于Netty的RPC简易实现
  7. oracle PROFILE的使用学习
  8. HP-Socket v5.4.4 发布,高性能跨平台网络通信框架
  9. 把博客园的博客导出为MovableType的文本格式
  10. javaScript,Dwr分页模拟
  11. java算法大全_java经典算法_算法面试题大全含答案
  12. C语言简易贪吃蛇(附完整代码)
  13. 【昊鼎王五】win10电脑如何设置让背景色变成保护眼睛的绿豆色?
  14. html按钮功能的实现原理,触摸按键原理是什么 触摸按键原理介绍【图文详解】...
  15. 《迅雷链精品课》第十课:共识算法理论基础
  16. 【图像】搜索相同,或者相似照片
  17. 高速电路PCB布局布线参考
  18. 独享云虚拟主机、共享云虚拟主机、云服务器 ECS 区别
  19. 中粤拼音在线转换_【PPT技巧】添加拼音小妙招
  20. Failed to get schema version. Underlying cause: Failed to create database metastore_db

热门文章

  1. 链路聚合(二层链路和三层链路)
  2. MAC新手教程:十分钟轻松熟悉Mac系统
  3. 《英语口语900句 (624页+360分钟录音)》(Oral English 900 Expressions)
  4. 基于python和深度学习(语音识别、NLP)实现本地离线智能语音控制终端(带聊天功能和家居控制功能)
  5. arduino与hcsr04_基于Arduino的超声波传感器HC-SR04
  6. 服务器不显示NPC名字是什么情况,走进科学:一些不明显的服务器名字的由来
  7. Nginx配置虚拟主机三种方式
  8. 通过TMG发布ActiveSync
  9. IDA + GDBServer实现iPhone程序远程调试 (手机远程)
  10. 解决excel数据透析表计算类型没有非重复计数选项