Python算法之求n个节点不同二叉树个数
|
问题 创建一个二叉树 二叉树有限多个节点的集合,这个集合可能是: 空集 由一个根节点,和两棵互不相交的,分别称作左子树和右子树的二叉树组成 创建二叉树: 创建节点 再创建节点之间的关系 Python代码示例
# !/usr/bin/env python
# -*-encoding: utf-8-*-
# author:LiYanwei
# version:0.1
class TreeNode(object):
def __init__ (self,data,left = None,right = None):
self.data = data
self.left = left
self.right = right
def __str__(self):
return str(self.data)
# 节点
A = TreeNode('A')
B = TreeNode('B')
C = TreeNode('C')
D = TreeNode('D')
# 节点间的关系
A.left = B
A.right = C
B.right = D
print B.right
问题 求n个节点不同二叉树个数 1个节点 2个节点 3个节点 4个节点 ... n个节点 递归进行累加 Python代码示例
# !/usr/bin/env python
# -*-encoding: utf-8-*-
# author:LiYanwei
# version:0.1
# 求n个节点不同二叉树个数
def count(n):
# root : 1
# left : k
# right : n - 1- k
# s = 0
# if n == 0:
# # 空树
# return 1
s = count.cache.get(n,0)
if s:
return s
for k in xrange(n):
s += count(k) * count(n - 1 - k)
count.cache[n] = s
return s
# 重复计算优化
count.cache = {0 : 1}
print count(100)
总结 以上就是本文关于Python算法之求n个节点不同二叉树个数的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python探索之自定义实现线程池、python中模块的__all__属性详解等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
