原创 判斷兩棵二叉樹是不是相同

(一)在左右節點不可以旋轉的時候: //核心代碼,先確定根節點是否相同,再判斷左孩子和右孩子是否相同。 bool equal(tree *root ,tree *root1) { if (root == NULL&&roo

原创 括號{}()[]匹配

使用棧來實現 #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 100 typedef struct elem { int date

原创 由前序遍歷和中序遍歷,求後序遍歷

若已知一棵二叉樹的前序序列是 B E F C G D H, 中序序列是 F E B G C H D ,則它的後序序列_。 前序遍歷:先遍歷根節點,再遍歷左孩子,最後遍歷右孩子。 中序遍歷:先遍歷左孩子,再遍歷根節點,最後遍歷右

原创 冒泡排序簡單改進

int main(void) { int a[] = {0,1,2,3,4,5,6,7,8,9}; bool temp = true; for (int i = 0; i < 9; i++) {

原创 鏈式隊列的基本操作(配圖)

一、結構體結構 隊列中儲存的內容,本身是一個鏈表 隊頭和隊尾只是指向這個鏈表的兩個指針,這樣就可以使用兩個指針控制訪問的事件 typedef struct elem { int date; elem *next;

原创 兩個棧實現隊列的功能。(外部接口是隊列)

#include<stdio.h> #include<stdlib.h> //棧 typedef struct Stack { int date; Stack *next; }Stack; //隊列 typed

原创 二叉樹

一、二叉樹的結構 typedef struct tree { char date; tree *lchil; tree *rchil; }tree; 二、二叉樹的創建 void create_tree(t

原创 圖書館裏有沒有某本書,現有6人排隊,有3個人來藉此書,3個人來還此書,且若到某人借書時,若無書,則立即離開,多少種排隊方法能借到書?

#include<stdio.h> #include<stdlib.h> #define SUM 6 int state[SUM]; //1代表還書 -1代表借書 // void book(int book_lend,int b

原创 全部輸入是小括號的字符串,判斷是否匹配

#include<stdio.h> #include<stdlib.h> #define MAX 50 bool pipei(char * a) { int i = 0; int result = 0;

原创 哈夫曼樹

(一)基礎知識 路徑:從一個結點到另一個結點之間的分支序列。 路徑長度:從一個結點到另一個結點所經過的分支數目。 結點的權:根據應用的需要可以給樹的結點賦權值 帶權路徑長度:從根到該結點的路徑長度與該結點權的乘積。 樹的

原创 二叉樹按層遍歷輸出——雙指針法(圖解)

(一)申請一個vector的容器vt。 (二)設置兩個指針(當然,不是必須是指針形式的指針,可以用數組的下標代替,只是採用指針這個思想),這兩個指針一個指向當前訪問的節點——cur(標誌目前訪問的是哪個節點),另外一個指向當前層

原创 卡特蘭數證明

1.飯後,姐姐洗碗,妹妹把姐姐洗過的碗一個一個地放進碗櫥摞成一摞。一共有n個不同的碗,洗前也是摞成一摞的,也許因爲小妹貪玩而使碗拿進碗櫥不及時,姐姐則把洗過的碗摞在旁邊,問:小妹摞起的碗有多少種可能的方式? 2.給定n個數,有多

原创 二叉排序樹創建、查找、刪除

一、二叉樹的結構體結構 typedef struct tree { int date; tree *lchild; tree *rchild; }tr_t; 二、二叉排序樹的創建 void creat_

原创 線性查找

//線性查找 //將第0個元素,做爲防止越界的標記 //從後往前查 typedef struct { int num; }student; typedef struct { int length; st