12-1-2:二叉搜尋樹:left.key<key<eight.key;最小堆:key<left.key,key<right.key;不能,使用堆排序的話,得O(nlgn)12-1-3:這個已經在第十章做過了,使用棧的話,有點浪費,因為使用棧,parent就用不上了;不使用棧的情況,就是使用parent回溯父結點,對於x,我們已經有了尋找x後繼得程式:TERR-SUCCSSOR,我們從最小節點開始調用TREE-SUCCESSOR即可12-1-4:這個也已經做過了,此處不重
想看更多的解題報告:http://blog.csdn.net/wangjian8006/article/details/7870410
13-1-1:13-1-2:如果是紅色,不是紅/黑樹狀結構,違反性質4;如果是黑色,不是紅/黑樹狀結構,違反性質5;13-1-3:是紅/黑樹狀結構;這也就說明了,後面的插入操作和刪除操作,使違反性質的節點上移至根結點策略;13-1-4:度:可能是2,此時兩個子結點都是黑色的;可能是3,此時有一個紅色子結點,一個黑色的;可能是4,此時,有兩個紅色子結點;深度就是black-height,因為紅色的都被吸收了;13-1-5:假設最短的一條長度為h1,那麼它的黑高bh1最多為h1;假設最長的一條長度為
10-1-2:兩個棧分別從數組的兩端開始,向中間擴充;10-1-5:這個deque的代碼以前的實現過(c++
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410 轉載請註明出處:http://blog.csdn.net/wangjian8006題目大意:給出你一個無向圖,然後對其中的點去上色,
/*poj 1236題意:有一個有向圖,現在在任意多個節點上發送資料,問使所有節點都能收到資料,需要向多少個節點發送資料 仍然是這個有向圖,問至少需要添加多少條邊才能使得在任意節點發送資料所有節點都能收到資料。思路:很明顯這道題是強連通方面的題目,在強連通中縮點之後的節點的出度和入度都十分重要。 我們現在來考慮出度和入度和這道題目的答案有什麼關係。 入度:如果有一個節點有入度那我們傳送資料的時候肯定可以選擇指向它的那個節點。所以顯然入度為0的點就是第一問的答案
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410
/*二叉搜尋樹是一棵二叉樹,之所以成為搜尋樹,是因為適用於搜尋,大部分與搜尋有關的演算法, *大都採用這一策略,包括B樹,也可以看做是對二叉搜尋樹的擴充 *二叉搜尋樹滿足: *設x為樹中一個結點,如果y是x左子樹的一個節點,那麼y.key<=x.key *如果y是x右子樹的一個結點,那麼y.key>=x.key *//*二叉搜尋樹中的結點結構: *關鍵字key,衛星資料data *parent--父結點,left-child--左孩子,right-child右孩子
//原來自己暴力真的很差啊//HDU 1584//用深搜還是第一次嘗試呢//假設現在要放置1,但是2,3,4都已經放好了,那麼1肯定只能放在5的下面了,因為234也只會放在5的下面;//又如此來說1隻能放在了5的下面所以要break一下;#include"stdio.h"#include"string"using namespace std;int mark[11];int id[11];int ans;int ab(int x){if(x<0) return -x;return
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410
//博弈論之SG函數(第一道SG)//題意 :輸入比較麻煩,有n堆石頭每次只能取S集合中的數字顆數,取完最後一顆為勝,問先手勝負;//輸入:S集合中有t個數;對於這個測試案例有l個詢問行,接下來每個詢問行的第一個數為石頭的堆數,接下來則是每堆石頭的個數//思路:對於每個S集合打出sg[]函數的表出來。然後異或之結果就好了;已經打好了的不必要再次操作了、#include"stdio.h"#include"string"using namespace std;#define MAXV
//強連通分量//題意:求從u出發能到v,並且從v出發也能到u的這些點,並且將其輸出;//求出一個圖的若干個強連通分量並且如果這個強連通分量中的縮點出度為0的話那麼這個強連通分量裡面的點就都滿足題意。//kosaraju//poj 2553#include <iostream>using namespace std;#define MAXM 50010#define MAXV 5010#define min(a,b) (a>b?b:a)typedef struct{int s,
先自己寫了一個簡單但是代碼寫的挺差的單鏈表:#include"mymemory.h"#include"myconstruct.h"#include<iostream>//簡單單鏈表template<typename T>struct _slist_node {T data;_slist_node* next;};//既然是簡單鏈表,我們應該使用new分配記憶體,不過,我覺得我們確實應該使用記憶體池template<typename T,typename Alloc=
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410
//poj
#include<iostream>//stl版雙鏈表,與迭代器共同工作#include"mymemory.h"#include"myconstruct.h"template<typename T>struct __list_node{typedef void* void_pointer;void_pointer prev;//其實可以設為__list_node<T>*void_pointer next;T
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410
想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410