如何判断一个二叉树节点是左节点还是右节点child?
How to determine if a Binary Tree node is a Left or Right child?
我有一个简单的树数据结构,但是,我想实现两个名为 isLeftChild
和 isRightChild
的方法。
问题是我很难理解树。概念和大致流程还没有完全掌握
到目前为止,这是我的简单树:
class Node(object):
''' A tree node. '''
def __init__(self, data):
self.left = None
self.right = None
self.data = data
def isLeftChild(self):
''' Returns True if the node is a left child, else False. '''
pass
def isRightChild(self):
''' Returns True if the node is a right child, else False. '''
pass
def insert(self, data):
''' Populate the tree. '''
if self.data:
if data < self.data:
if self.left is None:
self.left = Node(data)
else:
self.left.insert(data)
elif data > self.data:
if self.right is None:
self.right = Node(data)
else:
self.right.insert(data)
else:
self.data = data
def printTree(self):
''' Display the tree. '''
if self.left:
self.left.printTree()
print self.data
if self.right:
self.right.printTree()
def main():
root = Node(8)
root.insert(2)
root.printTree()
main()
如何让节点确定它是左 child 还是右 child (未参考其data
)?
我不确定我需要将什么添加到我的树中才能确定这一点。
使用父属性并测试内存引用是否与父项的右或左在内存中的引用相同。无论如何,您将需要一个父属性来遍历树。
return self is self.parent.left # in the isLeftChild
我有一个简单的树数据结构,但是,我想实现两个名为 isLeftChild
和 isRightChild
的方法。
问题是我很难理解树。概念和大致流程还没有完全掌握
到目前为止,这是我的简单树:
class Node(object):
''' A tree node. '''
def __init__(self, data):
self.left = None
self.right = None
self.data = data
def isLeftChild(self):
''' Returns True if the node is a left child, else False. '''
pass
def isRightChild(self):
''' Returns True if the node is a right child, else False. '''
pass
def insert(self, data):
''' Populate the tree. '''
if self.data:
if data < self.data:
if self.left is None:
self.left = Node(data)
else:
self.left.insert(data)
elif data > self.data:
if self.right is None:
self.right = Node(data)
else:
self.right.insert(data)
else:
self.data = data
def printTree(self):
''' Display the tree. '''
if self.left:
self.left.printTree()
print self.data
if self.right:
self.right.printTree()
def main():
root = Node(8)
root.insert(2)
root.printTree()
main()
如何让节点确定它是左 child 还是右 child (未参考其data
)?
我不确定我需要将什么添加到我的树中才能确定这一点。
使用父属性并测试内存引用是否与父项的右或左在内存中的引用相同。无论如何,您将需要一个父属性来遍历树。
return self is self.parent.left # in the isLeftChild