package A;
import java.util.Scanner;
public class JosePhu {
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
Emp root=new Emp(1,"zml");
Emp node2=new Emp(2,"zml2");
Emp node3=new Emp(3,"zml3");
Emp node4=new Emp(4,"zml4");
Emp node5=new Emp(5,"zml5");
Emp node6=new Emp(6,"zml6");
Emp node7=new Emp(7,"zml7");
root.setLeft(node2);
root.setRight(node3);
node2.setLeft(node4);
node2.setRight(node5);
node3.setLeft(node6);
node3.setRight(node7);
binaryTree.setRoot(root);
binaryTree.qian();
System.out.println("=======");
binaryTree.zhong();
System.out.println("===========");
binaryTree.hou();
System.out.println("前序遍历的方式~");
Emp resNode=binaryTree.q(5);
if (resNode!=null){
System.out.printf("找到了,信息为no=%d name=%s",resNode.getId(),resNode.getName());
}else {
System.out.printf("没有找到 no=%d 的英雄",5);
}
}
}
/*
* 写盒子该有的东西,比如id,name。因为我看人家一般用private,所以我也用了,但是用了private就要写get,set方法
* 写一个有参构造器
* 实现get,set方法
* 重写toString方法*/
class Emp {//盒子部分
private int id;//任何的private都需要get,set方法
private String name;
private Emp left;
private Emp right;
public Emp(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Emp getLeft() {
return left;
}
public void setLeft(Emp left) {
this.left = left;
}
public Emp getRight() {
return right;
}
public void setRight(Emp right) {
this.right = right;
}
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public void preOrder(){
System.out.println(this);
if (this.left!=null){
this.left.preOrder();
}
if (this.right!=null){
this.right.preOrder();
}
}
public void midOrder(){
if (this.left!=null){
this.left.midOrder();
}
System.out.println(this);
if (this.right!=null){
this.right.midOrder();
}
}
public void suffixOrder(){
if (this.left!=null){
this.left.suffixOrder();
}
if (this.right!=null){
this.right.suffixOrder();
}
System.out.println(this);
}
public Emp preSearch(int id){
if (this.id==id){
return this;
}
Emp emp=null;
if (this.left!=null){
emp=this.left.preSearch(id);
}
if (emp!=null){
return emp;
}
if (this.right!=null){
emp=this.right.preSearch(id);
}
return emp;
}
public Emp midSearch(int id){
Emp emp=null;
if (this.left!=null){
emp=this.left.preSearch(id);
}
if (emp!=null){
return emp;
}
if (this.id==id){
return this;
}
if (this.right!=null){
emp=this.right.preSearch(id);
}
return emp;
}
public Emp suffixSearch(int id){
Emp emp=null;
if (this.left!=null){
emp=this.left.preSearch(id);
}
if (emp!=null){
return emp;
}
if (this.right!=null){
emp=this.right.preSearch(id);
}
if (emp!=null){
return emp;
}
if (this.id==id){
return this;
}
return emp;
}
}
class BinaryTree {
//这其实跟哈希表一样的结构
private Emp root;
public void setRoot(Emp root) {
this.root = root;
}
public void qian() {
if (this.root != null) {
this.root.preOrder();
} else {
System.out.println("empty");
}
}
public void zhong() {
if (this.root != null) {
this.root.midOrder();
} else {
System.out.println("empty");
}
}
public void hou() {
if (this.root != null) {
this.root.suffixOrder();
} else {
System.out.println("empty");
}
}
public Emp q(int id){
System.out.println("进入前序遍历");
if (root!=null){
return root.preSearch(id);
}else {
return null;
}
}
public Emp z(int id){
if (root!=null){
return root.midSearch(id);
}else {
return null;
}
}
public Emp h(int id){
if (root!=null){
return root.suffixSearch(id);
}else {
return null;
}
}
}
遍历和查找二叉树
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
二叉树和二叉查找树
以前学过二叉树,是用c语言实现的,当时虽然听懂了,但是自己用c语言实现,还是有点困难的,
前端 二叉树 数据结构 子节点 数据 -
二叉查找树(BST)及二叉树的遍历
一、二叉查找树(BST)1、二叉查找树的特征 二叉查找树(BST)也称为二叉搜索树或二叉排序树。二叉查找树的节点包含键二叉查...
二叉查找树 二叉树的遍历 子树 二叉树 后序遍历 -
二叉树(二)——遍历
一、介绍了二叉树的四种遍历算法:1、前序遍历,2、中序遍历,3、后序遍历,4、按层遍历。
二叉树 前序遍历 中序遍历 后序遍历 按层遍历 -
Java 二叉树插入查找 java 二叉树遍历
二叉树遍历二叉树的遍历主要有四种:前序、中序、后序和层序遍历的实现方式主要是:递归和非递归
Java 二叉树插入查找 二叉树各类遍历 java 子树 二叉树 中序遍历