二叉数的建立和求树的深度

来源:互联网 发布:李勇seo博客 编辑:程序博客网 时间:2024/06/17 02:18

二叉数的建立和求树的深度

Node.java
1.先定义一个节点

public class Node {    int data;    Node left;    Node right;    Node(int x){        this.left=null;        this.right=null;        this.data=x;    }}

2.Btree.java 然后定义一个棵二叉数

/** * Created by xizwu on 2016/11/3. *  the deep of the Btree */public class Btree {    Node root;    public Btree(){        root=null;    }    public void BuildBtree(Node node,int val){        if(root==null)        {            root=new Node(val);        }else{            if(val<node.data){                if(node.left==null)                {                    node.left=new Node(val);                }else{                    BuildBtree(node.left,val);                }            }else{                if(node.right==null)                {                    node.right=new Node(val);                }else {                    BuildBtree(node.right, val);                }            }        }    }    public int deepOfTree(Node node){        /*        树的深度        * */        if(node ==null){            return 0;        }        int left=deepOfTree(node.left);        int right=deepOfTree(node.right);        if(left==0&&right==0) return 1;        return Math.max(left,right)+1;    }    public int minDepth(Node node){        /*        * 根到叶子节点 的最短路径        * */        if(node==null)            return 0;        int left=minDepth(node.left);        int right=minDepth(node.right);        if(left==0 &&right==0) return 1;        if(left==0) left=Integer.MAX_VALUE;        if(right==0) right=Integer.MAX_VALUE;        return Math.min(left,right)+1;    }    public void preoder(Node node){        if(node==null)        { return;}        System.out.println(node.data);        preoder(node.right);        preoder(node.left);    }    public void inorder(Node node){        if(node==null){            return;        }        inorder(node.right);        System.out.println(node.data);        inorder(node.right);    }    public void postorder(Node node){        if(node==null){            return;        }        postorder(node.right);        System.out.println(node.data);        postorder(node.right);    }}

3.执行测试程序

/** * Created by xizwu on 2016/11/3. */public class Maintest {    public static  void main(String[] args){        Btree mytree=new Btree();        int[] a={2,4,12,6,45};        for (int i=0;i<a.length;i++)        {            mytree.BuildBtree(mytree.root,a[i]);        }        int b=mytree.deepOfTree(mytree.root);        System.out.println(b);        System.out.println("#####################");        mytree.preoder(mytree.root);    }}
0 0
原创粉丝点击