实现对二叉树的查找
创建树的类
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); } }