原创 Python:二叉搜索樹的第k個節點

牛客網上的劍指 offer的在線編程: 題目描述 給定一顆二叉搜索樹,請找出其中的第k大的結點。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按結點數值大小順序第三個結點的值爲4。 # -*- coding:utf

原创 Python:按之字形順序打印二叉樹

牛客網上的劍指 offer的在線編程: 題目描述 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 # -*- coding:utf

原创 Python:對稱的二叉樹

牛客網上的劍指 offer的在線編程: 題目描述 請實現一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其爲對稱的。 class TreeNode: def __init__(s

原创 Python:重建二叉樹

牛客網上的劍指 offer的在線編程: 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4

原创 Python:數據流中的中位數

牛客網上的劍指 offer的在線編程: 題目描述 如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值

原创 Python:直接選擇排序算法

選擇排序:空間複雜度爲O(1),時間複雜度爲O(n^2),算法不穩定,不具有適應性 1、掃描,獲取最小元素 2、與排好序的後一個元素交換位置 算法的穩定性是指:對於待排序的序列中,相同項的原來次序不能被改變 但是選擇排序算法將最小元素與

原创 Python中的yield

來自:http://blog.csdn.net/u012671171/article/details/42169843 def fib(max): a, b = 1, 1 while a < max:

原创 Python :替換空格

牛客網上的劍指 offer的在線編程: 題目描述 請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 # -*- codin

原创 Python :滑動窗口的最大值

牛客網上的劍指 offer的在線編程: 題目描述 給定一個數組和滑動窗口的大小,找出所有滑動窗口裏數值的最大值。例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,他們的最大值分別爲{

原创 Python:把二叉樹打印成多行

牛客網上的劍指 offer的在線編程: 題目描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 # -*- coding:utf-8 -*- class TreeNode: def __init__(

原创 Python :字符流中第一個不重複的字符

牛客網上的劍指 offer的在線編程: 題目描述 請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一

原创 Python :用兩個棧實現隊列

牛客網上的劍指 offer的在線編程: 題目描述 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。 # -*- coding:utf-8 -*- class Solution: def

原创 Python :刪除鏈表中重複的節點

牛客網上的劍指 offer的在線編程: 題目描述: 在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5 # -

原创 Python:序列化二叉樹

牛客網上的劍指 offer的在線編程: 題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹 class TreeNode: def __init__(self, x): self.val = x

原创 Python :從尾到頭打印鏈表

牛客網上的劍指 offer的在線編程: 題目描述: 輸入一個鏈表,從尾到頭打印鏈表每個節點的值 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x)