本文共 5604 字,大约阅读时间需要 18 分钟。
前序查找的思想
中序查找思想
后序查找思想
package com.shujujiegou;public class ran { public static void main(String[] args) { //先需要创建一棵二叉树 erchashu erchashu = new erchashu(); //创建需要的节点 HeroNode root = new HeroNode(1, "qqq"); HeroNode node2 = new HeroNode(2, "www"); HeroNode node3 = new HeroNode(3, "eee"); HeroNode node4 = new HeroNode(4, "rrr"); //说明 我们先手动创建该二叉树 后边学习递归的方式创建二叉树 root.setZuo(node2); root.setYou(node3); node3.setYou(node4); erchashu.setRoot(root); //测试 //前序遍历 1 2 3 4 erchashu.qianxu(); //中序遍历 2 1 3 4 erchashu.zhongxu(); //后序遍历 2 4 3 1 erchashu.houxu(); //前序查找 HeroNode emp=erchashu.zhongxuchazhao(1); if (emp != null) { System.out.printf("找到了,信息为 no=%d,name=%s",emp.getNo(),emp.getName()); }else { System.out.printf("没有找到no=%d的英雄",5); } }}//定义二叉树class erchashu{ private HeroNode root; public void setRoot(HeroNode root) { this.root = root; } //前序遍历 public void qianxu(){ if(this.root!=null){ this.root.qianxu(); }else { System.out.println("当前二叉树为空 无法遍历"); } } public void zhongxu(){ if(this.root!=null){ this.root.zhongxu(); }else { System.out.println("当前二叉树为空 无法遍历"); } } public void houxu(){ if(this.root!=null){ this.root.houxu(); }else { System.out.println("当前二叉树为空 无法遍历"); } } public HeroNode qianxuchazhao(int no){ HeroNode qq=null; if(this.root==null){ System.out.println("shu wei kong"); }else { qq=this.root.qianxuchazhao(no); } return qq; } public HeroNode zhongxuchazhao(int no){ HeroNode qq=null; if(this.root==null){ System.out.println("shu wei kong"); }else { qq=this.root.zhongxuchazhao(no); } return qq; } public HeroNode houxuchazhao(int no){ HeroNode qq=null; if(this.root==null){ System.out.println("shu wei kong"); }else { qq=this.root.houxuchazhao(no); } return qq; }}class HeroNode{ private int no; private String name; private HeroNode zuo; private HeroNode you; public HeroNode(int no, String name) { this.no = no; this.name = name; } public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public HeroNode getZuo() { return zuo; } public void setZuo(HeroNode zuo) { this.zuo = zuo; } public HeroNode getYou() { return you; } public void setYou(HeroNode you) { this.you = you; } @Override public String toString() { return "HeroNode{" + "no=" + no + ", name='" + name + '\'' + '}'; } public void qianxu(){ System.out.println(this);//先输出父节点 //递归向左子树前序遍历 if(this.zuo!=null){ this.zuo.qianxu(); } //递归向右子树前序遍历 if(this.you!=null){ this.you.qianxu(); } } public void zhongxu(){ //先递归向左子树中序遍历 if(this.zuo!=null){ this.zuo.zhongxu(); } //输出父节点 System.out.println(this); //递归向右子树中序遍历 if(this.you!=null){ this.you.zhongxu(); } } public void houxu(){ if(this.zuo!=null){ this.zuo.houxu(); } if(this.you!=null){ this.you.houxu(); } System.out.println(this); } public HeroNode qianxuchazhao(int no){ HeroNode temp=null; if(this.no==no){ return this; } if(this.zuo!=null){ temp=this.zuo.qianxuchazhao(no); } if(temp!=null){ return temp; }else { System.out.println("meizhaodao"); } if(this.you!=null){ temp=this.you.qianxuchazhao(no); } return temp; } public HeroNode zhongxuchazhao(int no){ HeroNode temp=null; if(this.zuo!=null){ temp=this.zuo.zhongxuchazhao(no); } if(temp!=null){ return temp; }else { System.out.println("mei zhaodao"); } if(this.no==no){ return this; } if(this.you!=null){ temp=this.you.zhongxuchazhao(no); } return temp; } public HeroNode houxuchazhao(int no){ HeroNode temp=null; if(this.zuo!=null){ temp=this.zuo.houxuchazhao(no); } if(temp!=null){ return temp; } if(this.you!=null){ temp=this.you.houxuchazhao(no); } if(temp!=null){ return temp; } if(this.no==no){ return this; } return temp; }}
代码运行效果如下:
转载地址:http://peax.baihongyu.com/