【发布时间】:2021-01-15 21:44:42
【问题描述】:
这可能听起来很傻,但相信我,我在网上搜索了各种文章,找不到合适的解释或根本没有解释,是否真的需要两个类一个用于 Node 和一个用于树来实现二叉树?以一个简单的python代码为例:
class Node():
def __init__(self,data):
self.data = data
self.left = None
self.right = None
class BinaryTree():
def __init__(self):
self.head = None
这基本上是我在许多在线文章中看到的,最近我开始学习 AlgoExpert 课程,其中有一个关于将二叉树作为输入和目标值作为另一个输入并获得最接近值的函数的问题树中的目标值并返回它。
这段代码如下:
#This is the class of the input root. Do not edit it.
class BinaryTree:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
现在看到这个 sn-p 我完全糊涂了,我怎样才能只使用一个类? 我试图在这里理解这个概念,这对某些人来说可能听起来很傻,但我宁愿问这个问题也不愿后悔根本不问。任何意见表示赞赏。
【问题讨论】:
-
我的第一个想法是树中的任何节点都可以解释为它下面的整个子树的表示。因此,这种简单的实现不需要单独的类。
-
如果您有单独的 Tree/Node 类,那么无论对内容进行什么更改,Tree 对象都可以保持其身份 - 包括根本没有节点,或者某些更改哪个节点的操作树的根。只有一个类,您只能方便地处理不更改根的操作——但这通常是特定应用程序所需要的。
标签: python class object data-structures binary-tree