二叉与树的遍历和应用.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉与树的遍历和应用

二叉树的遍历和应用;预备知识—递归;什么是递归?;举例:查词典;递归解决方案的一般形式;举例1:n的阶乘;举例2:逆置字符串;举例3:Hanoi塔;举例4:兔子繁殖(递归法);举例4:兔子繁殖(迭代法);二叉树的遍历;一、问题的提出; 顺着某一条搜索路径巡访二叉树 中的结点,使得每个结点均被访问一 次,而且仅被访问一次。; “遍历”是任何类型均有的操作, 对线性结构而言,只有一条搜索路 径(因为每个结点均只有一个后继), 故不需要另加讨论。而二叉树是非 线性结构,;层次遍历;前序周游(preorder traversal) 若二叉树非空, 则依次进行如下操作: (1) 访问根结点; (2) 前序周游左子树; (3) 前序周游右子树。;中序周游(inorder traversal) 若二叉树非空, 则依次进行如下操作: (1) 中序周游左子树; (2) 访问根结点; (3) 中序周游右子树。;后序周游(postorder traversal) 若二叉树非空, 则依次进行如下操作: (1) 后序周游左子树; (2) 后序周游右子树; (3) 访问根结点。;已知二叉树的前序和中序周游序列如下, 画出该二叉树。 前序周游序列: ABCDEFGHIJ 中序周游序列: CBEDAGHFJI ;已知二叉树的后序和中序周游序列如下, 画出该二叉树。 后序周游序列: ABCDEFG 中序周游序列: ACBGEDF ;画出中序周游序列为ABCDEFGHIJKL的完全二叉树。;上面三种周游方法都可以用递归函数来实现 例如, 前序周游二叉树的函数为: void preorder(BinNodeElem* subroot) { if (subroot == NULL) return; visit(subroot); preorder(subroot-left()); preorder(subroot-right()); };课后思考;遍历算法的应用举例;1、统计二叉树中叶子结点的个数;void CountLeaf (BiTree T, int count){ if ( T ) { if ((!T-lchild) (!T-rchild)) count++; // 对叶子结点计数 CountLeaf( T-lchild, count); CountLeaf( T-rchild, count); } // if } // CountLeaf;Traversal Example;2、求二叉树的深度;求二叉树的深度的 伪代码设计。 ;二叉树的存储;存于顺序存储结构;以字符串的形式 根 左子树 右子树 定义一棵二叉树;Status CreateBiTree(BiTree T) { scanf(ch); if (ch== ) T = NULL; else { if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW); T-data = ch; // 生成根结点 CreateBiTree(T-lchild); // 构造左子树 CreateBiTree(T-rchild); // 构造右子树 } return OK; } // CreateBiTree;A B C D ; 仅知二叉树的先序序列“abcdefg” 不能唯一确定一棵二叉树,;a b c d e f g;void CrtBT(BiTree T, char pre[], char ino[], int ps, int is, int n ) { // 已知pre[ps..ps+n-1]为二叉树的先序序列, // ins[is..is+n-1]为二叉树的中序序列,本算 // 法由此两个序列构造二叉链表 if (n==0) T=NULL; else { k=Search(ino, pre[ps]); // 在中序序列中查询 if (k== -1) T=NULL; else { } } // }

文档评论(0)

liwenhua11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档