python N叉树
用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叉树相关推荐
- python多叉树遍历_基于Python的多叉树遍历算法
[ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...
- Python递归生成多叉树结构之treelib
Python 多叉树结构之treelib 官方文档和源码 https://treelib.readthedocs.io/en/latest/index.html https://github.com/ ...
- 二叉树的前序、中序、后序非递归遍历 python实现
前言 python中二叉树的定义: class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None ...
- 【LeetCode】二叉树的最大深度
给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,15,7,null,null], ...
- python实现三叉树_使用python代码实现三叉搜索树高效率”自动输入提示”功能
最近项目中需要通过全拼音和简写拼音实现输入自动提示结果功能,查了一些资料发现三叉搜索树无论是在时间还是空间上都比较优秀. 三叉搜索树是trie树的演化版,除去了指针,这样在空间上节省不少,每个节点基本 ...
- python最短路径例子_Python实现的多叉树寻找最短路径算法示例
本文实例讲述了Python实现的多叉树寻找最短路径算法.分享给大家供大家参考,具体如下: 多叉树的最短路径: 思想: 传入start 和 end 两个 目标值 1 找到从根节点到目标节点的路径 2 从 ...
- Python Tree库绘制多叉树的用法介绍
Python Tree库绘制多叉树的用法介绍 Tree 库是一个 Python 的第三方库.这个库主要用于生成树和绘制树的图形. 一.安装Tree pip install Tree 使用 Tree 库 ...
- Python treelib库创建多叉树的用法介绍
Python treelib库创建多叉树的用法介绍 treelib 库是一个 Python 的第三方库.这个库实现了一些多叉树相关的常用方法. 一.安装treelib pip install tree ...
- python求多叉树任意两点之间的距离
对于多叉树求两点之间的距离,最难的地方在于有没有思路,如何找到指定点的位置,以及如何去计算两个指定点之间的距离,下图是一个简单的的多叉树,从5到1的距离为2,从5到7的距离为4. 我们可以将求解两点之 ...
最新文章
- bigdecimal 和负数比较_Java中BigDecimal精度和相等比较的坑
- 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come
- 分析Java核心转储
- Codeforces 977D: Divide by three, multiply by two(暴力)
- Openstack平台搭建之第二天
- 基于Netty的RPC简易实现
- oracle PROFILE的使用学习
- HP-Socket v5.4.4 发布,高性能跨平台网络通信框架
- 把博客园的博客导出为MovableType的文本格式
- javaScript,Dwr分页模拟
- java算法大全_java经典算法_算法面试题大全含答案
- C语言简易贪吃蛇(附完整代码)
- 【昊鼎王五】win10电脑如何设置让背景色变成保护眼睛的绿豆色?
- html按钮功能的实现原理,触摸按键原理是什么 触摸按键原理介绍【图文详解】...
- 《迅雷链精品课》第十课:共识算法理论基础
- 【图像】搜索相同,或者相似照片
- 高速电路PCB布局布线参考
- 独享云虚拟主机、共享云虚拟主机、云服务器 ECS 区别
- 中粤拼音在线转换_【PPT技巧】添加拼音小妙招
- Failed to get schema version. Underlying cause: Failed to create database metastore_db
热门文章
- 链路聚合(二层链路和三层链路)
- MAC新手教程:十分钟轻松熟悉Mac系统
- 《英语口语900句 (624页+360分钟录音)》(Oral English 900 Expressions)
- 基于python和深度学习(语音识别、NLP)实现本地离线智能语音控制终端(带聊天功能和家居控制功能)
- arduino与hcsr04_基于Arduino的超声波传感器HC-SR04
- 服务器不显示NPC名字是什么情况,走进科学:一些不明显的服务器名字的由来
- Nginx配置虚拟主机三种方式
- 通过TMG发布ActiveSync
- IDA + GDBServer实现iPhone程序远程调试 (手机远程)
- 解决excel数据透析表计算类型没有非重复计数选项