#include
#include
#include
typedef char eleltype;
//定義結構體
typedef struct
btnode,*binarytree;
//申請結點
btnode * buynode()
//釋放結點
void freenode(btnode *p)
//遞迴先序遍歷二叉樹
void preorder(btnode *ptr)
}//遞迴中序遍歷二叉樹
void inorder(btnode *ptr)
}//遞迴後序遍歷二叉樹
void pastorder(btnode *ptr)
}//建立二叉樹方式一:螢幕讀入 abc##de##f##g#h## (#代表null)
btnode * createtree1()
returns;}
//建立二叉樹方式二:二級指標 字串
btnode * createtree3(char ** const pstr)
returns;}
//方式三:中序 前序 建立二叉樹
int find(char *is,int n,char ch)
}return -1;
}btnode * create(char *ps,char *is,int n)
//建立左子樹(search,searchline,len)
s->leftchild = create(ps+1,is,pos);
//建立右子樹 (search,searchline,len)
s->rightchild = create(ps+pos+1,is+pos+1,n-pos-1);
}returns;}
btnode * createpi(char *ps,char *is)
else
}// 方式四:中序 後序 建立二叉樹
btnode * createtree(char *ls,char *is,int n)
s=buynode();
s->data = ls[n-1];
s->leftchild=createtree(ls,is,pos);
s->rightchild = createtree(ls+pos,is+pos+1,n-pos-1);
}returns;}
btnode * createil(char *is,char *ls)
else
}btnode *findvalue(btnode *ptr,elemtype x)
else
return p;
}}//層序遍歷二叉樹
int front = 0,rear =1;
void levelorder(btnode *ptr)
else
}}//雙分支結點的個數
int sizebinary(btnode *ptr)
else
else
else}}
}//尋找孩子結點的雙親結點
btnode * paret(btnode *ptr,btnode *child)
else
}}btnode * findparet(btnode *ptr,btnode *child)
else
}// 葉子結點個數
int sizeleaf(btnode *ptr)
else
if(ptr->leftchild==null && ptr->rightchild ==null)
else
}//結點總個數
int size(btnode *ptr)
return
1+size(ptr->leftchild)+size(ptr->rightchild);
}// 樹的深度
int depth(btnode *ptr)
int dl=depth(ptr->leftchild);
int dr=depth(ptr->rightchild);
return(dl>dr?dl:dr)+1;
}void main()
作業:
// obj1:大數的加減乘除取模判斷素數開方次方 檔案加密的分布式演算法
設計文件+功能函式+模組設計
// obj2:哈夫曼編碼 基於哈夫曼編碼的文字檔案解壓縮
// obj3:日曆系統 年月日 小時分 對日期進行操作 日程安排表
下次函式:
int sizeone();
int sizeoneleft();
int sizeoneright();
is_full_binarytree(root); //滿二叉樹
bool is_comp_binarytree(btnode *ptr); //完全二叉樹
bool is_balance_binarytree(btnode *ptr); //平衡二叉樹
//非遞迴建樹 (is ls ps)
void niceperorder(btnode *ptr);
void niceinorder(btnode *ptr);
void nicepastorder(btnode *ptr);
// 找兩個結點的最近公共雙親結點
btnode * findnearparet(btnode *ptr ,btnode *child1,btnode *child2);
// 找這個樹的最遠兩個結點的距離 返回兩個結點的位址 …可以用結構體存放 位址 + int
int maxpath(btnode *ptr);
struct retnode
; retnode retpath(btnode *ptr);
int rettwomaxpath(btnode ptr,btnode &child1,btnode *&child2);
問題:
//引用和指標的區別 引用的特點:邏輯 物理上 分類
// 寫乙個 棧 佇列 k佇列 無鎖佇列 棧滿擴容 堆區無空間??
//如何解決記憶體不足 單程序無問題 多程序的執行緒安全 效率 多執行緒共享
// ++ 葉子結點個數 左分支結點 右分支 雙分支??
遞迴遍歷檔案
function enumfileinrecursion path pchar longint stdcall varsearchrec tsearchrec found integer tmpstr string i integer begin i 1 result 0 查詢結果 檔案數 加上搜尋...
遞迴遍歷樹
其實就是業務驅動成長,因為昨天給的乙個介面是涉及多級架構的,也就是一級結構下面可以有多個二級架構,二級下面還可以有多個 因為不能確定下面到底有多少級,而又需要把所有組織遍歷出來放在 中展示。類似這種 一開始沒考慮什麼多級,用了for遍歷,後來一想,不對呀,不能確定有多少個的,不能這樣遍歷。然後問了一...
遞迴遍歷目錄
遞迴 乙個函式內部在其內部不呼叫其他函式,而是呼叫自身,類似迴圈 注,自己玩自己,防止死遞迴 使用遞迴來遍歷出乙個目錄中的所有檔案 import os def getalldirre path,sp 引數 路徑 返回值 none 完成功能,獲取呼叫者傳遞的路徑下的所有檔案 檔案 直接顯示,資料夾 二...