我是C程序员.我是python的新手.在C中,当我们定义二叉树节点的结构时,我们为它的右边和左边的子节点分配NULL:
struct node
{
int val;
struct node *right ;
struct node *left ;
};
Run Code Online (Sandbox Code Playgroud)
在初始化节点时,我们写为:
val = some_value
right = NULL;
left = NULL;
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:如何在Python中为节点的左右指针分配NULL值?
我们如何测试Python版本的NULL?在C中它将是:
if( ptr->right == NULL )
Run Code Online (Sandbox Code Playgroud)
谢谢!
App*_*ish 61
python中的所有对象都是使用引用实现的,因此代码中不存在对象和指向对象的指针之间的区别.
NULL调用python等价物None(这里有好的信息).由于python中的所有对象都是使用引用实现的,因此您可以重新编写结构,如下所示:
class Node:
def __init__(self): #object initializer to set attributes (fields)
self.val = 0
self.right = None
self.left = None
Run Code Online (Sandbox Code Playgroud)
然后它的工作方式与您期望的非常相似:
node = Node()
node.val = some_val #always use . as everything is a reference and -> is not used
node.left = Node()
Run Code Online (Sandbox Code Playgroud)
请注意,与NULLC 中的不同,None它不是"指向无处的指针":它实际上是一个实例class NoneType.因此,作为None一个对象,您可以像任何其他对象一样测试它:
if node.left == None:
print("The left node is None/Null.")
Run Code Online (Sandbox Code Playgroud)
虽然因为None 是单例实例,但使用is和比较引用相等性被认为更惯用:
if node.left is None:
print("The left node is None/Null.")
Run Code Online (Sandbox Code Playgroud)