- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树的基本术语 叶子(leaf) :度为0的结点,也称为终端结点。 分支结点:度不为0的结点,也称为非终端结点或内部结点。 二叉树的基本术语 广度优先(逐层)遍历 队列实现广度优先遍历 template class T void LevelOrder(BinaryTreeNodeT *t) {//对*t逐层遍历 BinaryTreeNodeT *p=t; LinkedQueueBinaryTreeNodeT* Q; while(p) { coutp-data;//访问p if(p-LeftChild) Q.Add(p-LeftChild); //将p的孩子放入队列 if(p-RightChild) Q.Add(p-RightChild); //访问下一个结点 if(Q.IsEmpty()) return; else Q.Delete(p);//相当于p=s.top(); s.pop(); } } 先序遍历递归算法 template class T void PreOrder(BinaryTreeNodeT *t) {//对*t进行前序遍历 if(t){ coutt-data; //访问根结点 PreOrder(t-LeftChild); //前序遍历左子树 PreOrder(t-RightChild); //前序遍历右子树 } } 先序遍历的非递归实现 先序遍历的非递归实现 先序遍历的非递归实现 template class T void PreOrderTranverse(BinaryTreeNodeT *t){ StackBinaryTreeNodeT* s(20); BinaryTreeNodeT *p; p=t; s.add(p); while(!s.IsEmpty()){ s.delete(p);//相当于p=s.top(); s.pop(); coutp-data; if(p-rightchild) s.add(p-rightchild); if(p-leftchild) s.add(p-leftchild); } } 后序遍历的非递归实现算法 0. 将根节点作为当前节点 1.进栈过程: a)如果当前节点不空且具有左子树,将当前节点压入栈中,否则进入2 b) 将当前节点的左子树的根节点设置为当前节点 c)重复a) 2.出栈过程: a) 如果当前节点不空且没有右子树,或者其右子树的根节点已经访问,访问之,否则进入3 b) 若栈空,结束,否则取出当前栈顶节点作为当前节点 c) 重复a) 3.将当前节点压入栈中 4.将当前节点的右子树的根节点设为当前节点,重复1 后序遍历的非递归实现 二叉树操作算法举例 遍历二叉树是二叉树各种操作的基础,即很多操作可以在遍历过程中完成。 根据遍历算法的程序框架,可以派生出很多关于二叉树的应用算法,如求结点的双亲、结点的孩子,判定结点所在层次等,甚至可以在遍历过程中生成结点,建立二叉树的存储结构。 int CountLeaf(BinaryTreeNode * root) { ??? if(root==NULL) return 0; ? ? ?? else if(root-lchild==NULLroot-rchild==NULL) ??? return 1;??????? else ??? return CountLeaf(root-lchild)+ CountLeaf(root-rchild); } bool search(BinaryTreeNode * root, int k){ Using std::stack; //使用STL中的stack stack BinaryTreeNode * aStack; BinaryTreeNode * p=root; while(!aStack.empty( ) || p){ if (p){ aStack.push(p); //当前结点入栈 p=p-Lchild; } else{ p=aStack.top( ); // 返回栈顶 if (p-data==k)
文档评论(0)