zoukankan      html  css  js  c++  java
  • java实现二叉树的相关操作

    import java.util.ArrayDeque;
    import java.util.Queue;
    
    
    public class CreateTree {
    
    
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Node root=new Node();
    root.data=9;
    
    Node temp01=new Node();
    temp01.data=1;
    root.left=temp01;
    
    Node temp02=new Node();
    temp02.data=3;
    root.right=temp02;
    
    Node temp03=new Node();
    temp03.data=2;
    root.left.left=temp03;
    
    Node temp04=new Node();
    temp04.data=4;
    root.left.right=temp04;
    
    Node temp05=new Node();
    temp05.data=8;
    root.right.left=temp05;
    
    Node temp06=new Node();
    temp06.data=6;
    root.left.left.left=temp06;
    
    Node temp07=new Node();
    temp07.data=7;
    root.left.left.right=temp07;
    
    System.out.println("--------先序遍历----------");
    SelectTree1(root);
    System.out.println();
    System.out.println("---------中序遍历---------");
    SelectTree(root);
    System.out.println();
    System.out.println("---------后序遍历---------");
    SelectTree2(root);
    System.out.println();
    System.out.println("----------叶节点个数-----------");
    int i=leafNum(root);
    System.out.println(i);
    System.out.println("----------层次遍历二叉树-----------------");
    levelOrder(root);
    
    System.out.println();
    int j=deep(root);
    System.out.println("---------高度---------");
    System.out.println(j);
    
    }
    // 中序遍历
    public static void SelectTree(Node root){
    if(root==null)
    return;
    SelectTree(root.left);
    System.out.print(root.data+" ");
    SelectTree(root.right);
    }
    
    // 先序遍历
    public static void SelectTree1(Node root){
    if(root==null)
    return;
    System.out.print(root.data+" ");
    SelectTree1(root.left);
    SelectTree1(root.right);
    }
    
    
    
    // 后序遍历
    public static void SelectTree2(Node root){
    if(root==null)
    return;
    SelectTree2(root.left);
    SelectTree2(root.right);
    System.out.print(root.data+" ");
    
    
    }
    
    
    
    
    // 叶子数
    public static int leafNum(Node node) { 
           if (node != null) { 
               if (node.left == null && node.right == null) { 
                   return 1; 
               } 
               return leafNum(node.left)+leafNum(node.right); 
           } 
           return 0; 
       } 
     
    //求二叉树的深度 
       public static int deep(Node node){ 
        int h1, h2;
           if(node == null) 
             {return 0; 
             }
           else{
       h1= deep(node.left);
       h2= deep(node.right);
         return (h1<h2)?h2+1:h1+1;
           }
           
       } 
       
    // 层次遍历 
       public static void levelOrder(Node node) { 
           if (node == null) 
               return; 
           Queue<Node> queue = new ArrayDeque<Node>(); 
           queue.add(node); 
           while (!queue.isEmpty()) { 
             Node temp = queue.poll(); 
               System.out.print(temp.data); 
               if (temp.left != null) 
                   queue.add(temp.left); 
               if (temp.right != null) 
                   queue.add(temp.right); 
           } 
       } 
    }
    class Node{
    boolean visited=false;
    int data=0;
    Node left=null;
    Node right=null;
    }
  • 相关阅读:
    eclipse中springsource-tool-suite(sts)插件安装教程
    maven的安装配置超详细教程【含nexus】
    取消文件与svn服务器的关联
    An internal error occurred during: "Initializing Java Tooling". Eclipse启动发生的错误
    jQuery validate 设置失去焦点就校验和失去焦点就表单校验是否通过
    CSS禁止滚动条
    六十:Flask.Cookie之flask设置cookie的有效域名
    五十九:Flask.Cookie之flask设置cookie过期时间
    五十八:Flask.Cookie之flask设置和删除cookie
    五十七:flask文件上传之使用flask-wtf验证上传的文件
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/5910683.html
Copyright © 2011-2022 走看看