欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python算法之求n個(gè)節(jié)點(diǎn)不同二叉樹(shù)個(gè)數(shù)

 更新時(shí)間:2017年10月27日 15:22:34   作者:玩蛇的  
本文先向大家分享了建立二叉樹(shù)的簡(jiǎn)單代碼,其次介紹了Python計(jì)算n個(gè)節(jié)點(diǎn)不同二叉樹(shù)個(gè)數(shù)的問(wèn)題及實(shí)現(xiàn)代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。

問(wèn)題

創(chuàng)建一個(gè)二叉樹(shù)

二叉樹(shù)有限多個(gè)節(jié)點(diǎn)的集合,這個(gè)集合可能是:

空集

由一個(gè)根節(jié)點(diǎn),和兩棵互不相交的,分別稱(chēng)作左子樹(shù)和右子樹(shù)的二叉樹(shù)組成

創(chuàng)建二叉樹(shù):

創(chuàng)建節(jié)點(diǎn)

再創(chuàng)建節(jié)點(diǎn)之間的關(guā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)
# 節(jié)點(diǎn)
A = TreeNode('A')
B = TreeNode('B')
C = TreeNode('C')
D = TreeNode('D')
# 節(jié)點(diǎn)間的關(guān)系
A.left = B
A.right = C
B.right = D
print B.right

問(wèn)題

求n個(gè)節(jié)點(diǎn)不同二叉樹(shù)個(gè)數(shù)

1個(gè)節(jié)點(diǎn)
根節(jié)點(diǎn)1 1種
1種二叉樹(shù)

2個(gè)節(jié)點(diǎn)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)1 1種(依照1節(jié)點(diǎn)的推斷)
根節(jié)點(diǎn)1 右節(jié)點(diǎn)1 1種(依照1節(jié)點(diǎn)的推斷)
2種二叉樹(shù)

3個(gè)節(jié)點(diǎn)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)0 右節(jié)點(diǎn)2 2種(依照2節(jié)點(diǎn)的推斷)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)1 右節(jié)點(diǎn)1 1種(依照1節(jié)點(diǎn)的推斷)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)2 右節(jié)點(diǎn)0 2種(依照2節(jié)點(diǎn)的推斷)
5種二叉樹(shù)

4個(gè)節(jié)點(diǎn)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)0 右節(jié)點(diǎn)3 5種(依照3節(jié)點(diǎn)的推斷)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)1 右節(jié)點(diǎn)2 2種(依照2節(jié)點(diǎn)的推斷)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)2 右節(jié)點(diǎn)1 2種(依照2節(jié)點(diǎn)的推斷)
根節(jié)點(diǎn)1 左節(jié)點(diǎn)3 右節(jié)點(diǎn)0 5種(依照4上面的推斷)
共14種二叉樹(shù)

...

n個(gè)節(jié)點(diǎn)

遞歸進(jìn)行累加

Python代碼示例

# !/usr/bin/env python
# -*-encoding: utf-8-*-
# author:LiYanwei
# version:0.1
# 求n個(gè)節(jié)點(diǎn)不同二叉樹(shù)個(gè)數(shù)
def count(n):
  # root : 1
  # left : k
  # right : n - 1- k
  # s = 0
  # if n == 0:
  #   # 空樹(shù)
  #   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
# 重復(fù)計(jì)算優(yōu)化
count.cache = {0 : 1}
print count(100)

總結(jié)

以上就是本文關(guān)于Python算法之求n個(gè)節(jié)點(diǎn)不同二叉樹(shù)個(gè)數(shù)的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python探索之自定義實(shí)現(xiàn)線(xiàn)程池、python中模塊的__all__屬性詳解等,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • 使用Numpy打亂數(shù)組或打亂矩陣行

    使用Numpy打亂數(shù)組或打亂矩陣行

    這篇文章主要介紹了使用Numpy打亂數(shù)組或打亂矩陣行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 對(duì)python中的iter()函數(shù)與next()函數(shù)詳解

    對(duì)python中的iter()函數(shù)與next()函數(shù)詳解

    今天小編就為大家分享一篇對(duì)python中的iter()函數(shù)與next()函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python Tkinter對(duì)話(huà)框控件使用詳解

    Python Tkinter對(duì)話(huà)框控件使用詳解

    Tkinter中提供了三種對(duì)話(huà)框控件:文件選擇對(duì)話(huà)框、顏色選擇對(duì)話(huà)框和消息對(duì)話(huà)框。本文將具體為大家介紹一下這三種對(duì)話(huà)框的使用,需要的可以參考一下
    2022-01-01
  • 淺談算法之最小生成樹(shù)Kruskal的Python實(shí)現(xiàn)

    淺談算法之最小生成樹(shù)Kruskal的Python實(shí)現(xiàn)

    最小生成樹(shù)Kruskal算法可以稱(chēng)為“加邊法”,初始最小生成樹(shù)邊數(shù)為0,每迭代一次就選擇一條滿(mǎn)足條件的最小代價(jià)邊,加入到最小生成樹(shù)的邊集合里。本文將介紹它的原理,并用Python進(jìn)行實(shí)現(xiàn)
    2021-06-06
  • Python numpy 模塊介紹

    Python numpy 模塊介紹

    這篇文章主要介紹了Python numpy 模塊,在motplotlib的學(xué)習(xí)過(guò)程中,我們使用最多的就是numpy模塊。下面我們將使用numpy進(jìn)行創(chuàng)建數(shù)組、切片、索引、廣播等功能實(shí)操,需要的朋友可以參考一下
    2022-01-01
  • Python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列詳解

    Python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列詳解

    棧和隊(duì)列是在程序設(shè)計(jì)中常見(jiàn)的數(shù)據(jù)類(lèi)型。本節(jié)將詳細(xì)介紹隊(duì)列的定義及其不同實(shí)現(xiàn),并且給出隊(duì)列的一些實(shí)際應(yīng)用,感興趣的小伙伴可以了解一下
    2022-03-03
  • Python pkg_resources模塊動(dòng)態(tài)加載插件實(shí)例分析

    Python pkg_resources模塊動(dòng)態(tài)加載插件實(shí)例分析

    當(dāng)編寫(xiě)應(yīng)用軟件時(shí),我們通常希望程序具有一定的擴(kuò)展性,額外的功能——甚至所有非核心的功能,都能通過(guò)插件實(shí)現(xiàn),具有可插拔性。特別是使用 Python 編寫(xiě)的程序,由于語(yǔ)言本身的動(dòng)態(tài)特性,為我們的插件方案提供了很多種實(shí)現(xiàn)方式
    2022-08-08
  • 如何利用Python開(kāi)發(fā)一個(gè)簡(jiǎn)單的猜數(shù)字游戲

    如何利用Python開(kāi)發(fā)一個(gè)簡(jiǎn)單的猜數(shù)字游戲

    這篇文章主要給大家介紹了關(guān)于如何利用Python開(kāi)發(fā)一個(gè)簡(jiǎn)單的猜數(shù)字游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python上級(jí)目錄文件導(dǎo)入的幾種方法(from.import)

    Python上級(jí)目錄文件導(dǎo)入的幾種方法(from.import)

    有時(shí)候我們可能需要import另一個(gè)路徑下的python文件,下面這篇文章主要給大家介紹了關(guān)于Python上級(jí)目錄文件導(dǎo)入的幾種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Django urls.py重構(gòu)及參數(shù)傳遞詳解

    Django urls.py重構(gòu)及參數(shù)傳遞詳解

    這篇文章主要介紹了Django urls.py重構(gòu)及參數(shù)傳遞詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論