在数据机构中经常需要对树型存储结构遍历,在python中不像C++需要操作很多指针:
class Node(object):
def __init__(self,elem = -1, lChild = None, rChild = None):
self.elem = elem
self.lChild = lChild
self.rChild = rChild
class Tree(object):
def __init__(self):
self.root = Node()
self.queue = []
def add(self,elem):
node = Node(elem)
if node.elem == -1:
self.root = node
self.queue.append(self.root)
else:
treeNode = self.queue[0]
if treeNode.lChild == None:
treeNode.lChild = node
self.queue.append(treeNode.lChild)
else:
treeNode.rChild = node
self.queue.append(treeNode.rChild)
self.queue.pop()
def frontSearch(self,root):#先序
if root == None:
return
print(root.elem)
self.frontSearch(root.lChild)
self.frontSearch(root.rChild)
def levelSearch(self, root):#广度遍历
if root == None:
return
node = root
queue = []
queue.append(node)
while queue:
node = queue.pop(0)
print(node.elem)
if node.lChild != None:
queue.append(node.lChild)
if node.rChild != None:
queue.append(node.rChild)
更多知识搜索wiki:https://en.wikipedia.org/wiki/Tree_traversal