Java Tree 樹 數據結構


說到樹結構就不得不回顧 鏈表結構 https://www.cnblogs.com/easyidea/p/13371863.html

 如果鏈表結構中再多一個指針會是什么情況?

 

 

 是不是像樹根一樣,這就是 樹 數據結構。

class TreeNode<E>{      //類名 :Java類就是一種自定義的數據結構
    E val;              //數據 :節點數據 
    TreeNode left;      //對象 :引用下一個節點對象。在Java中沒有指針的概念,Java中的引用和C語言的指針類似
    TreeNode right;     //對象 :引用下一個節點對象。在Java中沒有指針的概念,Java中的引用和C語言的指針類似
    TreeNode(E val){    //構造方法 :構造方法和類名相同   
        this.val=val;   //把接收的參數賦值給當前類的val變量
    }
}

public class Test{
    public static void main(String[] args){
        TreeNode<Integer> root = new TreeNode<Integer>(3);    //創建根節點
        growth(root,2);                                       //創建深度為3的樹結構
        print(root);                                          //打印樹結構
    }
    
    
    //通過遞歸的方式創建樹的子節點
    static void growth(TreeNode root,int deep){
        if(deep==0) return;
       
        TreeNode<Integer> left  = new TreeNode<Integer>(deep);    //創建左子節點
        TreeNode<Integer> right = new TreeNode<Integer>(deep);    //創建右子節點
    
        root.left=left;
        root.right=right;
        
        growth(left,deep-1);    //遞歸調用
        growth(right,deep-1);   //遞歸調用
        
    }
    
    
    //通過遞歸的方式打印樹結構
    static void print(TreeNode root){
        if(root==null){
            return;
        }
        System.out.print(root.val);
        print(root.left);    //遞歸調用
        print(root.right);   //遞歸調用
    }
}

如上面的示例構建的是一顆標准的二叉樹結構:

當然樹的結構還可以是N叉樹:數中每個節點的子節點個數相同,子節點個數是多少就叫做 多少叉樹。

如下面3叉樹:

三叉樹節點:

class TreeNode<E>{      //類名 :Java類就是一種自定義的數據結構
    E val;              //數據 :節點數據 
    TreeNode left;      //對象 :引用下一個節點對象。在Java中沒有指針的概念,Java中的引用和C語言的指針類似
    TreeNode center;      //對象 :引用下一個節點對象。在Java中沒有指針的概念,Java中的引用和C語言的指針類似
    TreeNode right;     //對象 :引用下一個節點對象。在Java中沒有指針的概念,Java中的引用和C語言的指針類似
    TreeNode(E val){    //構造方法 :構造方法和類名相同   
        this.val=val;   //把接收的參數賦值給當前類的val變量
    }
}

 

當然樹的結構還可以是不規則的,如下圖所示:

 

 這樣的結構怎么表示呢?

下面給出了一種表示方法:

class TreeNode<E>{      //類名 :Java類就是一種自定義的數據結構
    E val;              //數據 :節點數據 
    
    //對象 :引用下一個節點對象。在Java中沒有指針的概念,Java中的引用和C語言的指針類似
    //用來存放一堆子節點
    List<TreeNode> childs 
    TreeNode(E val){    //構造方法 :構造方法和類名相同   
        this.val=val;   //把接收的參數賦值給當前類的val變量
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM