第9周树和二叉树(下)第6讲-本周小结.pdf
《第9周树和二叉树(下)第6讲-本周小结.pdf》由会员分享,可在线阅读,更多相关《第9周树和二叉树(下)第6讲-本周小结.pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1二叉树遍历 1/23 某种次序某种次序 访问所有节点访问所有节点 不重复访问不重复访问 先序遍历先序遍历 中序遍历中序遍历 后序遍历后序遍历 层次遍历层次遍历 具有递归性具有递归性 二叉树算法二叉树算法 二叉树查找二叉树查找 二叉树遍历二叉树遍历 2/23 基于递归遍历基于递归遍历 采用递归数据结构的递归算法设计方法采用递归数据结构的递归算法设计方法 N LR b f(b):大问题:大问题 f(L):小问题:小问题f(R):小问题:小问题 3部分组成,两种类型:节点,子树部分组成,两种类型:节点,子树 先节点,再子树先节点,再子树 先序先序 先子树,再节点先子树,再节点 后序后序 3/23
2、假设二叉树采用二叉链存储结构,设计一个算假设二叉树采用二叉链存储结构,设计一个算 法求二叉树法求二叉树b中度为中度为2的节点个数。的节点个数。 N LR b f(b):度为:度为2的节点数的节点数 f(b-lchild): L中度为中度为2的的 节点数节点数 f(b-rchild): R中度为中度为2的的 节点数节点数 f(b)=0当当b=NULL f(b)=1+f(b-lchild)+f(b-rchild) 当当b节点度为节点度为2 f(b)=f(b-lchild)+f(b-rchild) 其他情况其他情况 4/23 int dnodes(BTNode *b) if (b=NULL) ret
3、urn 0; if (b-lchild!=NULL else return dnodes(b-lchild)+dnodes(b-rchild); 算法如下:算法如下: 5/23 假设二叉树采用二叉链存储结构,设计一个算假设二叉树采用二叉链存储结构,设计一个算 法求二叉树法求二叉树b中第中第k层的节点个数。层的节点个数。 设计算法为设计算法为knumber(b,h,k, else/处理非空树处理非空树 if (h=k) n+;/当前访问的节点在第当前访问的节点在第k层时,层时,n增增1 else if (hlchild,h+1,k,n); knumber(b-rchild,h+1,k,n); 基
4、于先序遍历的思路 7/23 假设二叉树采用二叉链存储结构,设计一个假设二叉树采用二叉链存储结构,设计一个 算法求二叉树算法求二叉树b的宽度(的宽度(采用递归方法采用递归方法)。)。 levelnumber(BTNode *b,int h,int a):求二叉树:求二叉树b中所中所 有层的节点个数,存放在有层的节点个数,存放在a数组中,数组中,ah表示第表示第h层节点个数层节点个数 f(b,h,a) 不做任何事情不做任何事情当当b=NULL f(b,h,a) ah+; 其他情况其他情况 f(b-lchild,h+1,a) f(b-rchild,h+1,a) 8/23 void levelnumb
5、er(BTNode *b,int h,int a) if (b=NULL) return; else ah+; levelnumber(b-lchild,h+1,a); levelnumber(b-lchild,h+1,a); 9/23 int BTWidth1(BTNode *b) int width=0,i; int aMaxSize; for (i=1;iwidth) width=ai; i+; return width; 10/23 B A C D 每个节点有唯一的双亲节点每个节点有唯一的双亲节点 节点的层次节点的层次 = 双亲节点的层次双亲节点的层次+1 11/23 假设二叉树采用二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 森林经营规划
限制150内