- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA二叉树和非递归遍历的用法
JAVA二叉树递归和非递归遍历
1、递归遍历
[java]// 先序遍历(递归实现)
// 先序遍历(递归实现)
[java]/*总体思想是:因为递归的本质是用栈实现的,所以写出非递归的形式要用到栈。入栈的顺序与访问的顺序相反,如中序遍历访问顺序是left,current,right,所以入栈的顺序相反是right,current,leftsteo0:初始化当前节点currentstep1:初始化栈step3:出栈,并访问Note:中序遍历和后序遍历需要先判断bPushed为true时访问)step2:入栈循环结束条件是:栈为空*/ //算法框架 pushNode是入栈的方式 public void templet Node root //special case if root null return; //inital current node Node current root; //initial stack Stack s new Stack ; pushNode current,s ; //loop: base case is stack is empty while !s.empty //pop current s.pop ; //visit or push //end while //end templet // 先序遍历-深度优先搜索(递归实现)
/*总体思想是:因为递归的本质是用栈实现的,所以写出非递归的形式要用到栈。入栈的顺序与访问的顺序相反,如中序遍历访问顺序是left,current,right,所以入栈的顺序相反是right,current,leftsteo0:初始化当前节点currentstep1:初始化栈step3:出栈,并访问Note:中序遍历和后序遍历需要先判断bPushed为true时访问)step2:入栈循环结束条件是:栈为空*/
//算法框架 pushNode是入栈的方式public void templet Node root //special case if root null return; //inital current node Node current root; //initial stack Stack s new Stack ; pushNode current,s ; //loop: base case is stack is empty while !s.empty //pop current s.pop ; //visit or push //end while //end templet
// 先序遍历-深度优先搜索(递归实现)
privete void pushPreOrderNode Node current, Stack s if current null return ; if !s.empty leftChild current.leftChild; rightChild curret.rightChild; if rightChild! null //push rightChild s.push rightChild ; if leftChild! null //push leftChild s.push leftChild : visit current ; //current always first visit in preOrder //end if //end pushPreOrderNode
public void preOrder Node root //special case if root null return ; //inintial current node Node current root; //inintial stack Stack s new Stack ; pushPreOrderNode current,s ; //base case:stack is empty while !s.empty //pop current s.pop ; //push pushPreOrderNode current,s ; //end while //end preOrder // 中序遍历(非递归实现)
public void inOrder Node root //special case if root null return; Node current root; //initial stack Stack s
您可能关注的文档
- HC-33B使明书V1.0.doc
- HC-B988说明书.doc
- HDMI-USKVM编解码传输介绍.doc
- HDMI高清编中文说明书H265.doc
- Heroes英人物谱.doc
- HC6800- V1.1实验指导书1.doc
- HC6800- V2.0实验指导书.doc
- HIS住院医生站流程培训教程.doc
- hios电批扭和机械扭力计价格.docx
- HF数显式推拉NK指针式推拉力计.docx
- 辽宁省朝阳市赵尚志纪念馆公开招考3名讲解员公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 辽宁朝阳市龙城区招考聘用编外用工人员公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 辽宁阜新市卫健委所属事业单位公开招聘38人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 贵州黔西南兴仁市医疗专业岗位招考聘用公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 遵义市水利局2024年面向社会公开招聘工作人员历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 贵州省毕节市第一批次“人才强市”计划引进789名人才公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 贵州贵阳广播电视台公开招聘优秀人才100人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 贵州黔东南州直属事业单位公开招聘30人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 重庆双桥区2024第四季度招聘事业单位工作人员历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 辽宁省丹东广播电视台面向社会公开招考4名电视播音员公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
文档评论(0)