使用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)
- 使用python解决的第一道算法题
- 不使用 for , while ,递归,如何解决一道简单的算法题?
- 一道解决的非常漂亮的算法题
- 一道解决的非常漂亮的算法题
- 一道使用了翻手算法解答的算法题
- 第一道题的flag
- 一道JAVA题的解决
- 一道走迷宫算法题python实现
- 一道简单的Python题
- 一道算法题的数学分析
- 一道有趣的算法题
- 一道有趣的算法题
- 一道算法题的解析
- 一道小的算法题
- 一道有趣的算法题。。。
- 一道简单的算法题
- 一道简单的算法题
- 使用程序解决一道逻辑推理题
- HDU 2033 A+B
- 【物理】hdu 4036
- 【二分】hdu 4033
- 【floyd】hdu 4034
- 校验程序(其实我没搞清楚它是什么意思)(自编)
- 使用python解决的第一道算法题
- IT技术人才职业发展中的重要障碍---沟通能力
- gzip数据流解压
- 微软亚洲工程院首席架构师:如何做一流的研究
- 复习之插入排序
- document.getElementByTagName()的用法
- 彻底搞定C指针-函数名与函数指针
- ARM的发展
- 面试题总结 - C 语言 - 指针