# -*- coding:utf-8 -*-
# file: pybtree.py
#
class BTree():
def __init__(self,value):
self.right = None
self.left = None
self.value = value
#
def insertRight(self,value):
self.right = BTree(value)
#注意返回的return
return self.right
def insertLeft(self ,value):
self.left = BTree(value)
return self.left
def show(self):
print self.value
def preorder(node):
if node.value:
node.show()
if node.left:
preorder(node.left)
if node.right:
preorder(node.right)
if __name__ =="__main__":
root = BTree('root')
A = root.insertLeft('A')
C = A.insertRight('D')
B = root.insertRight('B')
root.show()
A.show()
B.show()
图
# -*- coding:utf-8 -*-
#从终点开始,不断增加起点
def searchGraph(graph ,start , end):
result = []
generatePath(graph ,[start] , end, result)
#按路径的长短进行排序
result.sort(lambda x,y :cmp(len(x), len(y)))
return result
def generatePath(graph ,path , end, result):
state = path[-1]
if state == end:
result.append(state)
else:
for i in graph[state]:
if i not in path:
generatePath(graph ,path + [i] , end, result)