Tricks(二十三)—— Python 实现树这种数据结构
来源:互联网 发布:动态相册软件 编辑:程序博客网 时间:2024/05/01 05:05
普通二叉树
class Node: def __init__(self, point): self.left = None self.right = None self.point = point
当然也在构造时,传递进来左子树/右子树,如下:
class Node: def __init__(self, left, right, point): self.left = left self.right = right self.point = point
可回溯的二叉树
通过维护一个指向父节点的指针实现回溯:
class Node: def __init__(self, point): self.left = None self.right = None self.parent = None self.point = point
此时若想维护,父节点与子节点的互关系(父到子,子到父),需定义如下的成员函数:
def set_left(self, left): self.left = left left.parent = selfdef set_right(self, right): self.right = right right.parent = self
- (1)根节点(root)的父节点为空;
- (2)叶节点(leaf)的左子树节点(left)右子树节点,均为空;
- (3)内部节点(internal)的左右子树节点不全为空,父节点不为空;
树功能的拓展
对树功能的拓展,即是引入新的成员变量,以及由此展开的成员函数,例如想在树的迭代构建的过成中,当前节点的深度(depth):
class Node: def __init__(self, point, depth): self.left = None self.right = None self.point = point self.depth = depth
depth 参数也是在迭代的过程中进行的指定。
0 0
- Tricks(二十三)—— Python 实现树这种数据结构
- Tricks(二十四)—— python 复合数据结构
- Python Tricks(二十二)—— small tricks
- Python Tricks(十三)—— 欧几里得算法
- C Tricks(十三)—— trim 的实现
- Tricks(二十二) —— zip(python) 的实现
- Python Tricks(二十)—— 阶乘的极简实现
- Matlab Tricks(二十三)—— 保存图像到 pdf
- Python Tricks(二十一)—— 排列组合的计算
- Python Tricks(十一)—— 阶乘的实现
- Python Tricks(十四)—— list 逆序的实现
- Python Tricks(十七)—— enumerate 的实现
- Python Tricks(十九)—— switch 的实现
- Tricks(二十一)—— 随机数
- Python Tricks(十八) —— range
- Python Tricks(二)—— 牛顿法求解平方根(最大整数)
- Matlab Tricks(二十一)—— 软阈值函数的实现
- Matlab Tricks(二十八)—— 笛卡尔积的实现
- Integer缓存策略
- 51nod 1283 最小周长
- super关键字和函数覆盖(Override)
- 我对AOP的理解
- Java for Web学习笔记(十九):Session(3)Session Listener
- Tricks(二十三)—— Python 实现树这种数据结构
- jQuery诞生记-原理与机制
- Socket通信原理和实战
- 1108. Finding Average (20) 字符串处理
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- Mac OS 安装tensorflow RuntimeError: Broken toolchain: cannot link a simple C program
- PHP中时间详解
- Spring AOP 详解
- CSS学习(七)——滤镜 (已废除)