[从头读历史] 第298节 时间简史 关于黑洞的那些事

剧情提要:

史蒂芬.霍金博士的《时间简史》,主要讲了黑洞,关于黑洞,有什么需要知道的吗?

正剧开始:

星历2016年07月11日 17:02:46, 银河系厄尔斯星球中华帝国江南行省。

[工程师阿伟]正在和[机器小伟]一起研究[时间简史 关于黑洞的那些事]。

彩蛋:(关于栈,队列,二叉树的python实现,只是初步实现)

<span style="font-size:18px;">###
# @usage   数据结构汇总,不断增加中
# @author  mw
# @date    2016年07月11日  星期一  10:06:56
# @param
# @return
#
###

#栈
class Stack:
    def __init__(self, size = 16):
        self.stack = []
        self.size = size
        self.top = -1 

    def setSize(self, size):
        self.size = size 

    def isEmpty(self):
        if self.top == -1:
            return True
        else:
            return False 

    def isFull(self):
        if self.top + 1 == self.size:
            return True
        else:
            return False 

    def top(self):
        if self.isEmpty():
            raise Exception("StackIsEmpty")
        else:
            return self.stack[self.top] 

    def push(self,obj):
        if self.isFull():
            raise Exception("StackOverFlow")
            #self.setSize(self.size*=2);
        else:
            self.stack.append(obj)
            self.top +=1 

    def pop(self):
        if self.isEmpty():
            raise Exception("StackIsEmpty")
        else:
            self.top -= 1
            return self.stack.pop() 

    def show(self):
        print(self.stack) 

    def test(self):
        s = Stack(5)
        s.push(1)
        s.push(2)
        s.push(3)
        s.push(4)
        s.push(5)
        s.show()
        s.pop()
        s.show()
        s.push(6)
        s.show()

#队列
class Queue:
    def __init__(self,size = 16):
        self.queue = []
        self.size = size
        self.front = 0
        self.rear = 0

    def setSize(self, size):
        self.size = size 

    def isEmpty(self):
        return self.rear == 0 

    def isFull(self):
        if (self.front - self.rear +1) == self.size:
            return True
        else:
            return False 

    def first(self):
        if self.isEmpty():
            raise Exception("QueueIsEmpty")
        else:
            return self.queue[self.front] 

    def last(self):
        if self.isEmpty():
            raise Exception("QueueIsEmpty")
        else:
            return self.queue[self.rear] 

    def add(self,obj):
        if self.isFull():
            raise Exception("QueueOverFlow")
        else:
            self.queue.append(obj)
            self.rear += 1 

    def delete(self):
        if self.isEmpty():
            raise Exception("QueueIsEmpty")
        else:
            self.rear -=1
            return self.queue.pop(0)

    def show(self):
        print(self.queue) 

    def test(self):
        q = Queue(3)
        q.add(1)
        q.add(2)
        q.show()
        q.delete()
        q.show()

#二叉树,要用到Queue()
class BinaryTreeNode:
    def __init__(self,data,left,right):
        self.left = left
        self.data = data
        self.right = right 

class BinaryTree:
    def __init__(self):
        self.root = None 

    def makeTree(self,data,left,right):
        self.root = BinaryTreeNode(data,left,right) #left.root = right.root = None 

    def isEmpty(self):
        if self.root is None:
            return True
        else:
            return False 

    def preOrder(self,r):
        if r.root is not None:
            print(r.root.data)
            if r.root.left is not None:
                self.preOrder(r.root.left)
            if r.root.right is not None:
                self.preOrder(r.root.right) 

    def inOrder(self,r):
        if r.root is not None:
            if r.root.left is not None:
                self.inOrder(r.root.left)
            print(r.root.data)
            if r.root.right is not None:
                self.inOrder(r.root.right)

    def postOrder(self,r):
        if r.root is not None:
            if r.root.left is not None:
                self.preOrder(r.root.left)
            if r.root.right is not None:
                self.preOrder(r.root.right)
                print(r.root.data) 

    def levelOrder(self,a):
        q = Queue()
        r = a
        while r is not None:
            print(r.root.data)
            if r.root.left is not None:
                q.add(r.root.left)
            if r.root.right is not None:
                q.add(r.root.right) 

            if q.isEmpty():
                print("empty")
                r = None
            else:
                r = q.delete() 

    def test(self):
        r = BinaryTree()
        ra = BinaryTree()
        ra.makeTree(2,None,None)
        rb = BinaryTree()
        rb.makeTree(3,None,None)
        r.makeTree(1,ra,rb)
        print("前序遍历")
        r.preOrder(r)
        print("中序遍历")
        r.inOrder(r)
        print("后序遍历")
        r.postOrder(r)
        print("层级遍历")
        r.levelOrder(r)

    def findTree(self, preList,inList,postList):
        if len(preList)==0:
            return
        if len(preList)==1:
            postList.append(preList[0])
            return
        root=preList[0]
        n = inList.index(root)
        self.findTree(preList[1:n+1],inList[:n],postList)
        self.findTree(preList[n+1:],inList[n+1:],postList)
        postList.append(root)

    #已知前序遍历结果和中序遍历结果,求后序遍历
    def test2(self):
        preList=list('DBACEGF')
        midList=list('ABCDEFG')
        afterList=[]

        self.findTree(preList,midList,afterList)
        print(afterList)

if __name__ == '__main__':
    stack = Stack();
    stack.test();

    queue = Queue();
    queue.test();

    btree = BinaryTree();
    btree.test();

    btree.test2();</span>

本节到此结束,欲知后事如何,请看下回分解。

时间: 2024-10-04 22:52:20

[从头读历史] 第298节 时间简史 关于黑洞的那些事的相关文章

[从头读历史] 第299节 时间简史 大爆炸理论靠谱吗

剧情提要: 史蒂芬.霍金博士的<果壳里的宇宙>,主要讲了大爆炸理论, 我们所处宇宙的起点,真的是大爆炸吗? 正剧开始: 星历2016年07月11日 17:02:46, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[时间简史 大爆炸理论靠谱吗]. 先看一看关于地球的一些事: 下面基本就是来自于<果壳里的宇宙>: 其实阿伟并不知道大爆炸理论是不是靠谱,但这个理论很多东西没有说清楚,这是勿庸置疑的. 阿伟其实也并不是一定要它把所有东西都讲清楚,因为或许描述

[从头读历史] 第296节 时间简史 层次的划分和度量

剧情提要: 神话没有能够指明世界的起源问题,看来只能依靠科学来解决了.首先,当然是划分出 各种尺度和层次,毕竟宏观世界和微观世界是不能混在一起纠缠不清的. 正剧开始: 星历2016年07月11日 17:02:46, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[时间简史 层次的划分和度量]. 真的是很杂乱的一堆知识,但总算是理清了层次的刻度和划分. 本节到此结束,欲知后事如何,请看下回分解.

[从头读历史] 第297节 时间简史 爱因斯坦的相对论

剧情提要: 爱因斯坦的相对论,到底讲的是些什么呢? 正剧开始: 星历2016年07月11日 17:02:46, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[时间简史 爱因斯坦的相对论]. <span style="font-size:18px;">#洛仑兹变换 def LTransfer(velocity, choice, pos = [0, 0, 0, 0]): #[x, y, z, t] -> [x', y', z', t'] #

[从头读历史] 第300节 时间简史 结语:地球的年轮

剧情提要: 一万年太久,只争朝夕,那么几十亿年到底有多久呢,其中发生了些什么呢? 地球上曾经有些什么世代,有些什么纪元? 正剧开始: 星历2016年07月11日 17:02:46, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[时间简史 结语:地球的年轮]. Hadean [E]ha1die3en0 Cryptic [E]kuei4pe0tei4ke0 [A]kui1pe0tie3ke0 Era [E]yi4e3rue0 [A]ye4e3re0 Basin [E]

[从头读历史] 第244节 三皇与五帝

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月05日 17:02:52, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[三皇与五帝]. 这次主要研究的是历史的最早记录,三皇与五帝,但在研究之前呢,要先界定下可考年与不

[从头读历史] 第241节 根据天时定历法

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月04日 07:41:01, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[历法的制定]. 历法的制定,在历史上各个时期,都是有不同的标准的,而且在中华帝国, 是作为重中之

[从头读历史] 第278节 诗经 曹风

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月30日 12:36:18, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[诗经 曹风]. 蜉蝣之羽 衣裳楚楚 心之憂矣 於我歸處 蜉蝣之翼 采采衣服 心之憂矣 於我歸息

[从头读历史] 第249节 易经

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月10日 12:25:16, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[易经]. 初九 潜龙勿用 九二 见龙在田 利见大人 九三 君子终日乾乾 夕惕若厉 无咎 九四 或

[从头读历史] 第260节 左传 [BC717至BC658]

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入元婴期的修炼后,日夜苦修,神通日进. 这日,忽然想起自己虽然神通大涨,却在人文涵养上始终无有寸进,不觉挂怀. 在和[工程师阿伟]商议后,决定先理清文史脉络,打通文史经穴.于是,便有了这部 [从头读历史]的修炼史. 正剧开始: 星历2016年06月18日 15:38:02, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[左传 [BC717至BC658]]. 六年春 鄭人來渝平 更成也 翼九宗五正頃父之子嘉父 逆晉侯