实现对二叉树的查找
创建树的类
public class Tree {
TreeNode root;
//设置跟节点
public void setRoot(TreeNode root){
this.root=root;
}
//获取根节点
public TreeNode getRoot(){
return root;
}
public void fontShow() {
root.fontShow();
}
public void centerShow() {
root.centershow();
}
public void lastShow() {
root.lastShow();
}
public TreeNode frontSearch(int i) {
return root.frontSearch(i);
}
}
创建结点的类
public class TreeNode {
//在这个类中 创建 相应的类的节点
//节点的权
int value;
//声明相对应的左节点以及右节点
TreeNode lNode;
TreeNode rNode;
public TreeNode(int value ){
this.value=value;
}
public void setlNode(TreeNode lNode){
this.lNode=lNode;
}
//设置右节点的指向
public void setrNode(TreeNode rNode){
this.rNode=rNode;
}
public void fontShow() {
System.out.println(value);
if(lNode!=null){
lNode.fontShow();
}
if (rNode!=null){
rNode.fontShow();
}
}
public void centershow() {
if(lNode!=null){
lNode.centershow();
}
System.out.println(value);
if (rNode!=null){
rNode.centershow();
}
}
public void lastShow() {
if (lNode!=null){
lNode.lastShow();
}
if(rNode!=null){
rNode.lastShow();
}
System.out.println(value);
}
public TreeNode frontSearch(int i) {
TreeNode target=null;
//对比当前节点的值
if (this.value==i){
return this;
}else{
//对比其左节点的值
if(lNode!=null){
target= lNode.frontSearch(i);
}
if(target!=null){
return target;
}
//对比其右节点的值
if(rNode!=null){
target=rNode.frontSearch(i);
}
}
return target;
}
}
创建测试类
public class TestTree {
public static void main(String[] args) {
//创建了一棵树
Tree tree =new Tree();
//创建根节点
TreeNode root=new TreeNode(1); //权值为1
tree.setRoot(root);
//创建一个左节点
TreeNode rootLeft=new TreeNode(2); //这是第二层的左节点
//将节点放入到 根节点的左侧
root.setlNode(rootLeft);
//创建一个右节点
TreeNode rootRight=new TreeNode(3);
//将有右节点放入到根节点的右侧
root.setrNode(rootRight);
//第二层的左节点的左节点
TreeNode l1=new TreeNode(4);
rootLeft.setlNode(l1);
//第二层的左节点的右节点
TreeNode l2=new TreeNode(5);
rootLeft.setrNode(l2);
//实现相应的节点的添加
rootRight.setlNode(new TreeNode(6));
rootRight.setrNode(new TreeNode(7));
//实现前序遍历
tree.fontShow();
System.out.println("以上是前序遍历");
tree.centerShow();
System.out.println("以上是中序遍历");
tree.lastShow();
System.out.println("以上是后序遍历");
//遍历查找相应的值
TreeNode result=tree.frontSearch(5 );
System.out.println(result);
}
}