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;
    }
  • 相关阅读:
    在其他博客里看到的比较好的map用法,进行储存啦啦~ x
    codevs 2597 团伙x
    codevs 1009 产生数x
    格子游戏x(并查集)
    codevs 5929 亲戚x
    [HDOJ2389]Rain on your Parade(二分图最大匹配,HK算法)
    [HDOJ2819]Swap(二分图最大匹配, 匈牙利算法)
    [HDOJ1281]棋盘游戏(二分图最大匹配,匈牙利算法)
    [HDOJ1083]Courses(二分图最大匹配,匈牙利算法)
    [HDOJ2444]The Accomodation of Students(二分图染色判定,最大匹配,匈牙利算法)
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/5910683.html
Copyright © 2011-2022 走看看