1.实现树结构的类,树的节点有三个私有属性 左指针 右指针 自身的值
#!/usr/bin/env python3
#-*-coding=utf-8-*-
'python实现树结构'
__author__='km'
class Node(object):
def __init__(self,data=None):
self._data = data
self._left = Node #可以这里定义左右节点
self._right = Node
def set_data(self,data):
self._data = data
def get_data(self):
return self._data
def set_left(self,node): #需要注意这里是node
self._left = node
def get_left(self):
return self._left
def set_right(self,node):
self._right = node
def get_right(self):
return self._right
if __name__ == '__main__':
root_node = Node('a') #这里需要传递data进去
left_node = Node('b') #这里还需要实例化左右节点
right_node = Node('c')
root_node.set_left(left_node) #给根节点的左指针赋值,使其指向左子节点
root_node.set_right(right_node) #给根节点的右指针赋值,使其指向右子节点
print(root_node.get_data(),left_node.get_data(),right_node.get_data())
运行结果如下:
二、实现前中后序遍历方法
#!/usr/bin/env python3
#-*-coding=utf-8-*-
'递归实现前,中,后序的二叉树遍历'
__author__='km'
class Node(object):
def __init__(self,data=None,left=None,right=None):
self._data = data
self._left = left
self._right = right
#前序遍历,根左右
def ProOrder(tree): #这里传入一个tree,需要注意这个def不在class里
if tree == None:
return False
print(tree._data)
ProOrder(tree._left)
ProOrder(tree._right)
#中序遍历,左根右
def MidOrder(tree):
if tree == None:
return False
MidOrder(tree._left) #先对左节点进行操作,左节点递归到头然后输出
print(tree._data)
MidOrder(tree._right)
#后续遍历,左右根
def LastOrder(tree):
if tree == None:
return False
LastOrder(tree._left)
LastOrder(tree._right)
print(tree._data)
if __name__=='__main__':
#这里需要注意树的创建,都在Node里。另外需要注意括号少了没
tree = Node('a',Node('b',Node('c'),Node('d')),Node('e',Node('f'),Node('g')))
ProOrder(tree)
MidOrder(tree)