TA:于波 计算机科学工程系 上海交通大学 December 5, 2009

Slides:



Advertisements
Similar presentations
金融一班 王亚飞 王亚飞 王浩浩 王浩浩 吴海玥 吴海玥 我 连云港 的 家 乡 连云港 连云港,位于东经118°24′~119°48′和北纬 34°~35°07′之间,古称郁洲、海州,民国时称 连云市,建国后称新海连市,别称“港城”。东 西长129公里,南北宽约132公里,水域面积 平方公里。连云港市也是我国于1984年.
Advertisements

配备计算机教室、多媒体教室、图书室、卫生室、 实验室、仪器室、音体美劳器材室、心理咨询室、少先 队活动室、教师集体备课室等专用教室。实验室、仪器 室全部按照省标准配备器材,演示实验开设率达 100% 。 学校现有图书 6050 册,生均 40 册。有一个 200 米环形跑 道的运动场地。 学校基本情况.
長得像的圖形 設計者:嘉義縣興中國小 侯雪卿老師 分享者:高雄市中山國小 江民瑜老師 高雄市勝利國小 許嘉凌老師.
课例评析—— 《回乡偶书》和《渔歌子》 评课人:冯琴.
就作文本身而言,题目堪称“眉目”,是作文的“眼睛”,从某种程度上说,它是作文材料和主题的浓缩或概括。
文化创新的途径.
与优秀的人在一起
2009—2010学年第一学期 小学品德与社会课程教学监控情况分析 潘诗求 2010年3月
15世纪欧洲人绘制的世界地图.
第四章 工业地域的形成与发展 第一节 工业的区位选择.
第7课 新航路的开辟 第7课 新航路的开辟.
股票、债券、和保险 投资理财的话题.
第6章 二叉树和树 前面的章节主要讨论的是线性结构,二叉树和树属于非线性的结构。遍历非线性结构比线性结构要麻烦。
解排列组合问题的常用策略.
死與生的自我掌握.
消防知识培训.
电阻 新疆兵团四师76团中学.
西元208年的赤壁之戰,是曹操、孫權和劉備在長江沿岸進行的一場會戰,對於三國鼎立局面的形成具有決定性影響。
第十一章 真理与价值 主讲人:阎华荣.
外貌和能力哪个更重要.
从此,我不在沉默寡言 那一刻 就在这一刻 世上还有爸爸好 我 长 大 了 张绅 4 文苑芬芳
第七章 固 定 资 产.
从容行走,优雅为师 江苏省梁丰高级中学 任小文
计算机软件技术基础 数据结构与算法(4).
数据结构——树和二叉树 1/96.
引入树 线性表、堆栈和队列都是线性结构,它们的共同特点:一对一; 计算机对弈中的一个格局可能有多个后继格局,用线性结构难以描述。
第六章 树和二叉树.
第六章 树和二叉树.
数据结构算法 模拟练习及解答二 绍兴文理学院 计算机系计算机应用教研室.
第5章 树( Tree )和二叉树 5.1 树的基本概念 5.2 二叉树 5.3 遍历二叉树和线索二叉树 5.4 树和森林
CH6 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林
第8章 查找 在英汉字典中查找某个英文单词的中文解释;在新华字典中查找某个汉字的读音、含义;在对数表、平方根表中查找某个数的对数、平方根;邮递员送信件要按收件人的地址确定位置等等。可以说查找是为了得到某个信息而常常进行的工作。 计算机、计算机网络使信息查询更快捷、方便、准确。要从计算机、计算机网络中查找特定的信息,就需要在计算机中存储包含该特定信息的表。如要从计算机中查找英文单词的中文解释,就需要存储类似英汉字典这样的信息表,以及对该表进行的查找操作。本章将讨论的问题即是“信息的存储和查找”。
第八章 查找.
数据结构 第六章 树与二叉树 深圳大学计算机系 蔡茂国.
第五章 树 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
数据结构 第6章 树和二叉树 什么是树和二叉树?? 二叉树的遍历 数据结构.
减数分裂 制作:浙江金华一中 徐新福.
觀察內容: 時間 作息 觀察內容 9:30~9:40 角落分享
運輸與空間的交互作用 運輸發展的階段 一、分散的港口 二、侵入路線 三、發展支線 四、初步相互連結 五、完全相互連結 六、高度優越的幹線
导入 21世纪教育网经纬社会思品工作室制作 我们可以通过哪些媒介(途径)获知这些消息?.
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
第六章 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.6 赫夫曼树及其应用.
Chapter 5 Tree & Binary Tree
Chapter8 Binary and Other Trees
数 据 结 构 Ch.6 树 计 算 机 学 院 肖明军
第六章 二叉树和树 6.1树的基本概念 6.2二叉树 6.3二叉树遍历 6.4线索二叉树 6.5树和森林 6.6树的应用(霍夫曼树及其编码)
第六章 树和二叉树.
本章重点难点 重点:顺序查找、二分查找、二叉排序树查找以及散列表查找的基本思想和算法实现。
第3章 栈和队列(一).
資料結構與C++程式設計進階 堆疊與佇列(Stack & Queue) 講師:林業峻 CSIE, NTU 6/ 21, 2010.
数 据 结 构 Ch.4 串 计 算 机 学 院 肖明军
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第二部分 免疫系统与免疫活性分子 第二章 免疫系统 第三章 免疫球蛋白 第二 部分 第五章 细胞因子 第四章 补体系统.
6.3 遍历二叉树和线索二叉树(知识点二) 遍历二叉树 一、问题的提出
第九章 查找 2019/2/16.
数据结构与数据库 习题课(2) 2016年11月25日.
Tree & Binary Tree.
学习中苦多?乐多? ——高二(1)班主题班会.
第六章 树和二叉树 学习要点 理解树的定义和基本术语,重点了解二叉树的定义、性质、存储结构; 掌握二叉树遍历的递归算法及它的典型运算;
9.1 基本概念 9.2 线性表的查找 9.3 树表的查找 9.4 哈希表的查找 9.5 各种查找方法的比较
機率論 研究自然律的重要工具之一 解決日常生活中的簡單問題。  . 機率論 研究自然律的重要工具之一 解決日常生活中的簡單問題。  
資料結構使用Java 第9章 樹(Tree).
Ch.9 查找 §9.1 基本概念 查找和排序是两个重要的运算
树和二叉树(一).
第13课 东汉的兴亡.
void HeapSort(int *a, int n) //堆排序 { //建立堆 for(int i = n/2-1; i >= 0; i--) //非叶节点最大序号值为n/2 HeapAdjust(a, i, n); for(int j = n-1; j >
繁星推薦系統 楊曉婷 副理 教育的服務 是我們的責任.
單元主題名: 大家都是好朋友 設計者:柯淑惠、林雨欣.
本节内容 1.二叉排序树的定义 2.二叉排序树的查找操作 3.二叉排序树的插入操作 4.二叉排序树的删除操作 5.二叉排序树的总结
Presentation transcript:

TA:于波 计算机科学工程系 上海交通大学 December 5, 2009 数据结构习题课二 树和查找 TA:于波 计算机科学工程系 上海交通大学 December 5, 2009

二叉树的性质 1. 一棵非空的二叉树的第i层上最多有 个结点。 证明见教材 Page 93页。

二叉树的性质 2. 一棵高度为 k 的二叉树最多具有 个结点。 证明见教材 Page 93页。

二叉树的性质 3. 对于一棵非空的二叉树如果叶子结点 数为 ,度数为2的结点数为 ,则 有 成立。 证明见教材 Page 93页。 3. 对于一棵非空的二叉树如果叶子结点 数为 ,度数为2的结点数为 ,则 有 成立。 证明见教材 Page 93页。 对结点: n=n0+n1+n2; 对边: n-1=0*n0+1*n1+2*n2

二叉树的性质 4. 具有n个结点的完全二叉树高度 为 。 证明见教材 Page 94页。 注意: 树的深度 + 1 == 树的高度

基础知识题 1. 若一个具有N个顶点,K条边的无向图 是一个森林(N>K),求该森林中有多少 棵树。

基础知识题 解答: 因为一棵具有n个顶个的树有n-1条 边,因此设此森林中有m棵树,每棵树具 有的定点数为 vi (1<= i <=m) v1+v2+…+vm=N; (v1-1)+(v2-1)+…+(vm-1)=K; => m=N-K

基础知识题 2. 已知一棵度为m的树中有N1个度为1的 结点,N2个度为2的结点,….,Nm个度 为m的结点。试问该树中有多少个叶子结 点?

基础知识题 解答: 关键在于树的结点个数与边的条数 联系起来 总的结点个数-1 = 边数 => ….

基础知识题 3. 将算术表达式 ((a+b)+c*(d+e)+f)*(g+h) 转化为二叉 树

基础知识题 * + + g h + f + * + a b c d e

基础知识题 4. 任意一个有n个结点的二叉树,一直它 有m个叶子结点,试证明非叶子结点有 m-1个度为2,其余的度为1.

基础知识题 解答: 关键在于树的结点个数与边的条数 联系起来 n=n1+n2+m n-1=1*n1+2*n2 => n2=m-1

基础知识题 5. 有n个结点的二叉树,已知叶子结点的 个数为n0,写出求度数为1的结点个数n1 的计算公式;若此树是高度为k的完全二 叉树,写出n为最小的公式;若二叉树中 仅有度为0和度为2的结点,写出求该二 叉树结点个数n的公式。

基础知识题 解答: 记度为2的结点个数为n2 当树是高度为k的完全二叉树, n=n0+n1+n2 n-1=1*n1+2*n2; => n1=n+1-2n0 当树是高度为k的完全二叉树, 完全二叉树,最小,那就是高度为k-1的满二叉树加1个结点。 仅有度为0和2,n=n0+n2,n-1=2*n2 => n=2*n0 -1

基础知识题 6. 设高为h的二叉树只有度为0和2的结点, 则此类二叉树的结点数至少为____, 至多 为______.

基础知识题 解答: 最少的情形 最多的情形 高度为h-1的满二叉树 高度为h的满二叉树

基础知识题 7. 深度为 k-1 的完全二叉树至少有____ 个结点,至多有_____个结点,k和结点 数n之间的关系为______.

基础知识题 解答: 深度为 k-1 的完全二叉树至少有 个 结点,至多有 个结点,k和结点数 n之间的关系为 . 高为h-1满二叉树+1结点 二叉树性质四

基础知识题 8. 回答问题写出推导过程: 含N个结点和N个叶子结点的完全三叉树 的高度是多少?

基础知识题 解答: 含N个结点的完全三叉树的高度设为H

基础知识题 解答: 2. 含N个叶子结点的完全三叉树的高度 设为H H为 a. N为3的幂: 或 b. 其他:

基础知识题 9. 用一维数组存放的一棵完全二叉树如 下: A B C D E F G H I J K L 写出后序遍历二叉树时访问结点的顺序

基础知识题 解答: 画树出解 H I D J K E B L F G C A

基础知识题 10. 有二叉树中序序列为:ABCEFGHD 后序序列为:ABFHGEDC 画出此二叉树

基础知识题 解答: C B D A E G F H

基础知识题 11. 已知二叉树各结点的先序、中序遍历 分别为ABCDEF和CBAEDF,画出该二叉 树。

基础知识题 解答: A B D C E F

基础知识题 12. 若一棵二叉树,左右子树均有三个结 点,其左子树的前序序列与中序序列相同, 右子树的中序序列与后序序列相同,试图 构造树。

基础知识题 解答: 左子树前序与中序相同 前序:根 左 右 中序:左 根 右 同理右子树中序与后序 后序:左 右 根

基础知识题 13. 已知二叉树左右子树均含有3个结点, 试图构造满足下面条件的二叉树 (1)左右子树先序与中序相同 (2)左子树中序与后序,右子树先序与 中序相同

基础知识题 解答:

基础知识题 14. 对于前序遍历和中序遍历结果相同的 二叉树为______;对于前序遍历和后序遍 历结果相同的二叉树为______。

基础知识题 解答: 对于前序遍历和中序遍历结果相同的二叉 树为 ;对 于前序遍历和后序遍历结果相同的二叉树 为 。 对于前序遍历和中序遍历结果相同的二叉 树为 ;对 于前序遍历和后序遍历结果相同的二叉树 为 。 所有节点只有右子树的二叉树 只有根结点的二叉树

基础知识题 15. 假设一个二叉树的层次序列为 ABCDEFGHIJ,中序序列DBGEHJACIF。 画出这棵二叉树。

基础知识题 解答:蓝色左子树,下划线右子树 ABCDEFGHIJ DBGEHJACIF BCDEFGHIJ DBGEHJ CDEFGHIJ CIF DEFGHIJ D EFGHIJ GEHJ FGHIJ IF GHIJ G HIJ HJ IJ I J J

基础知识题 构造树的过程: A A A A B B C B C D A A A B C B C B C D E D E F D E F G

基础知识题 A A A B C B C B C D E F D E F D E F G G H A G H I B C D E F G H J

基础知识题 16. 已知某字符串S中共有8种字符,各种 字符分别出现2次、1次、4次、5次、7次、 3次、4次、9次,对该字符串用{0,1}进 行前缀编码,问该字符串编码至少有多少 位?

基础知识题 解答: 至少需要 5*1+5*2+4*3+3*4+3*4+3*5+9*2+7*2= 98位 1 2 3 3 5 6 4 4 11 解答: 至少需要 5*1+5*2+4*3+3*4+3*4+3*5+9*2+7*2= 98位 1 2 3 3 5 6 4 4 11 9 7 8 20 15 35

基础知识题 17. 假设二叉树采用链表存储方式存储, 编写一个后序遍历二叉树的非递归算法。

基础知识题 解答: void postorder(Bitree *root) { Bitree *stack[max],*p; int tag[max],top; top=0; p=root; do{ //扫描左孩子 while(p!=NULL){ top++; stack[top]=p; tag[top]=0; //有孩子还未访问过标志 p=p->child; } if(top>0){ if(tag[top]==1){ //左右孩子结点均已访问过,则访问该结点 printf(“%c”,stack[top]->data); top--; else{ p=stack[top]; p=p->rchild; //扫描右孩子 tag[top]=1; //置当前结点的右孩子已//访问过标志 }while((p!=NULL) || (top!=0));

基础知识题 18. 设计算法,统计一个二叉树中所有叶 子结点的数目(递归与非递归)

基础知识题 解答: a. 递归,先序遍历 void countleaf(Bitree *t,int *count) { if(t!=NULL){ if((t->lchild==NULL) && (t->rchild==NULL)) count++;//结点是叶子,计数目加1 countleaf(t->lchild,count);//累计左子树上叶 //子结点树 countleaf(t->rchild,count);//右子树的 }

基础知识题 解答: b. 非递归 int countleaf ( Bitree *root) { int m; Seqstack *s; if(t!=NULL){ top=0; s->data[s->top]=t; do{ t=s->data[s->top]; s->top--; //退栈 if((t->lchild==NULL) && (t->rchild==NULL)) m++;//叶子结点,计数加一 else{ if(t->lchild != NULL){//左孩子进栈 s->top++; s->data[s->top]=t->lchild; } if(t->rchild != NULL){//右孩子进栈 s->data[s->top]=t->rchild; }while(top!=-1)//栈空是结束 return m;

基础知识题 19. 设计算法,将一个二叉树中每个结点 的左右孩子交换的算法(递归与非递归)

基础知识题 解答: a. 递归,先序遍历 void swap(Bitree *b) { Bitee *t; if(b == NULL) return; else{ t=b->lchild; b->lchild=b->rchild; b->rchild=t; swap(b->lchild); swap(b->rchild); }

基础知识题 解答: b. 非递归 void swap ( Bitree *root) { int top; Bitree *temp,*stack[max]; if(root != NULL){ top=1; stack[top]=root;//根结点进栈 } do{ root=stack[top]; //弹出栈顶结点 top--; //退栈 if((root->lchild != NULL) || (root->rchild != NULL)){//左右指针交换 temp=root->lchild; root->lchild=root->rchild; root->rchild=temp; if(root->lchild != NULL){//交换后左指针入栈 top++; stack[top]=root->lchild; if(root->rchild != NULL){//交换后右指针入栈 stack[top]=root->rchild; }while(top != 0);

基础知识题 20. 标示二叉树中各结点的值,各结点的 值依次为32~40.

基础知识题 解答: 36 32 40 35 37 33 38 34 39

基础知识题 21. 已知序列17,31,13,11,20,35, 25,8,4,11,24,40,27,请画出该 序列的二叉排序树,并分别给出下列操作 后的二叉树: 1) 插入数据9; 2) 删除结点17; 3) 再删除结点13;

基础知识题 解答: 17 13 31 11 20 35 8 25 40 4 24 27

基础知识题 插入9 17 13 31 11 20 35 8 25 40 4 9 24 27

基础知识题 插入17 13 11 31 8 20 35 4 9 25 40 24 27

基础知识题 插入13 11 8 31 4 9 20 35 25 40 24 27

基础知识题 22. 设K1,K2,K3是三个不同的关键字, K1>K2>K3,请画出按不同输入顺序简历 的二叉排序树

基础知识题 解答: K1 K1 K2 K3 K1 K3 K1 K3 K2 K1 K2 K2 K3 K3 K2 K1K2K3 K1K3K2

基础知识题 23. 哈希地址范围[0,9],哈希函数为 H(hey)=(key*key+2) MOD 9,采用链地 址法处理冲突,画出元素7,4,5,3,6,2,8,9 依次插入后的状态。

基础知识题 解答: 4 5 ^ 1 2 3 6 9 ^ 3 8 ^ 4 5 6 7 2 ^ 7 8 9

二叉树的构建唯一性证明 (1)前序+中序 可以唯一确定一棵二叉树 (2)后序+中序 可以唯一确定一棵二叉树 (3)前序+后序 不能唯一确定一棵二叉树 用归纳法证明(1), 定理(2)同理可证。 (1)n=1时候只有一个根节点显然成立 (2)假设n<k时成立,则n=k时,假设前序为P1, P2 , P3 , …, Pk-1 , Pk,中序为Q1 , Q2 , Q3 ,… Qj… Qk-1 ,Qk P1显然为根,我们假设P1 = Qj ,则[Q1,Qj-1]为P1的左子树, [Qj+1,Qk]为P1的右子树,同样我们推出[P2,Pj]为P1的左子树, [Pj+1,Pk]为P1的右子树。 根据假设我们知道[Q1,Qj-1]和[P2,Pj]可以唯一确定一棵二叉 树, [Qj+1,Qk]和[Pj+1,Pk]可以唯一确定一棵二叉树。所以n=k也 成立得证。

二叉树的构建唯一性证明 (1)前序+中序 可以唯一确定一棵二叉树 (2)后序+中序 可以唯一确定一棵二叉树 (3)前序+后序 不能唯一确定一棵二叉树 反例: A A B B

结束 谢谢大家 !