使用python解决的第一道算法题

来源:互联网 发布:unity3d 2017输出安卓 编辑:程序博客网 时间:2024/05/16 08:33

闲来无事玩玩python,发现和c、perl有很多相近之处,基本语法很容易就掌握了,刚好看到一算法题,就拿来练练手。

题目:输入一个整数和一棵二元树。

从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数22和如下二元树
     10 
     /   \  
   5   12  
  /        \  
4         7

则打印出两条路径:10, 12和10, 5, 7。


class Treenode:    def __init__( self, data ):        self._data = data        self._left   = None        self._right = None    def __str__( self ):        return str(self._data)class Tree:    def __init__( self ):        self._rootNode = None    def insertNode( self, value ):        if self._rootNode is None:            self._rootNode = Treenode(value)        else:            self.insertNodeHelper(self._rootNode, value)    def insertNodeHelper( self, node, value ):        if value < node._data:            if node._left is None:                node._left = Treenode(value)            else:                self.insertNodeHelper(node._left, value)        else:            if node._right is None:                node._right = Treenode(value)            else:                self.insertNodeHelper(node._right,value)cur_sum = 0tree    = Tree()stack   = []def print_path(treeNode, pathsum):    global cur_sum    if treeNode is not None:        cur_sum += treeNode._data        stack.append(treeNode._data)        print_path(treeNode._left, pathsum)        print_path(treeNode._right, pathsum)        if cur_sum == pathsum and treeNode._left is None and treeNode._right is None:            print stack        cur_sum -= treeNode._data        stack.pop()tree.insertNode(10)tree.insertNode(12)tree.insertNode(5)tree.insertNode(4)tree.insertNode(7)print_path(tree._rootNode, 22)





原创粉丝点击