编程语言
首页 > 编程语言> > 二叉树的查找 Java

二叉树的查找 Java

作者:互联网

实现对二叉树的查找

创建树的类

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);
        }
    }

标签:TreeNode,lNode,rNode,节点,查找,二叉树,Java,root,public
来源: https://blog.csdn.net/m0_56158576/article/details/120501814