Python 如何确定二叉树节点是左子节点还是右子节点?

Python 如何确定二叉树节点是左子节点还是右子节点?,python,tree,binary-tree,binary-search-tree,Python,Tree,Binary Tree,Binary Search Tree,我有一个简单的树数据结构,但是,我想实现两个名为isLeftChild和isRightChild的方法 问题是我很难理解树木。这一概念和一般过程尚未完全掌握 以下是我迄今为止的简单树: class Node(object): ''' A tree node. ''' def __init__(self, data): self.left = None self.right = None self.data = data d

我有一个简单的树数据结构,但是,我想实现两个名为
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()
类节点(对象):
“一个树节点”
定义初始化(自身,数据):
self.left=无
self.right=无
self.data=数据
def isLeftChild(自我):
''如果节点是左子节点,则返回True,否则返回False''
通过
def isRightChild(自身):
''如果节点是正确的子节点,则返回True,否则返回False''
通过
def插入(自身,数据):
“填充树”
如果是自助数据:
如果数据自我数据:
如果self.right为无:
self.right=节点(数据)
其他:
self.right.insert(数据)
其他:
self.data=数据
def打印树(自身):
“展示这棵树”
如果self.left:
self.left.printree()
打印自助数据
如果你是对的:
self.right.printree()
def main():
根=节点(8)
根.插入(2)
root.printree()
main()
如何让节点确定它是左子节点还是右子节点(不参考其
数据


我不确定需要向我的树中添加什么才能确定这一点。

使用父属性并测试内存引用是否与父级的右侧或左侧与子级在内存中的引用相同。无论如何,您都需要一个父属性来遍历树

return self is self.parent.left # in the isLeftChild