主頁 >  其他 > 認識一下二叉樹及其常見的一些操作和練習

認識一下二叉樹及其常見的一些操作和練習

2022-02-27 11:21:45 其他

認識二叉樹

樹的概念?

? 樹是一種非線性資料結構,它是由n(n>=0)個有限節點組成的一個具有層次關系的集合,之所以叫做樹,是因為從外觀上來看這個結構,其很像一棵樹,并且根還在最上面,


關于樹的一些基本概念??

  1. 節點的度:一個幾點向下連了幾條邊,那這個節點的度就是幾
  2. 樹的度:一棵樹中具有最大度的節點的度數就是整棵樹的度
  3. 葉子節點或終端節點:如果一個節點沒有孩子,或者說度為0,那這個節點就是葉子
  4. 雙親節點:剛才說的度是一個節點往下連接別的節點,這里的雙親結點就是一個節點往上的第一個節點,就是此節點的雙親節點
  5. 孩子節點:與雙親節點相反唄
  6. 根節點:顧名思義:樹根,樹根只能生孩子,沒有雙親
  7. 節點的層次:根所在層為第1層,根的孩子節點為第二層,一次類推
  8. 樹的高度或者深度:一棵樹的最大層次就是整棵樹的高度
  9. 非終端節點或分支節點:度不為零的節點
  10. 兄弟節點:同一個雙親生下來的節點間叫兄弟節點
  11. 堂兄弟節點:爺爺生了倆孩子,這倆孩子再生倆孫子,這倆孫子就是堂兄弟
  12. 節點的祖先:整棵樹的根
  13. 子孫:一個節點只要有孩子甚至孫子,,,那這個節點的后代都是它的子孫
  14. 森林:有m(m>=0)棵互不相交的樹的集合,一片森林里可以有很多樹,也可有0棵樹

樹的表示方法🥚

  1. 常見的如孩子兄弟表示法

    class Node{
        int val;
        Node firstChild;
        Node nextBrother;
    }
    

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-uBbcX8lX-1645867245859)(C:\Users\LebronHarden\AppData\Roaming\Typora\typora-user-images\image-20220226122644542.png)]


二叉樹🤜

概念🚡

? 一顆二叉樹是節點的一個有限集合,該集合或者為空,或者是由一個根節點加上兩棵分別稱為左子樹和右子樹的二叉樹組成,

特點😋

  1. 每個節點最多有兩顆子樹,即二叉樹中的每個節點的度最大為2
  2. 二叉樹的子樹有左右之分,其子樹的次序不能顛倒,因此二叉樹是有序樹

特殊的二叉樹💛

  1. 滿二叉樹:一個二叉樹,只不過每一層的節點都達到最大值,如果層次為k,則這一層的最大節點數:2(k-1),很簡單的明白:層數為k的滿二叉樹的總結點數:2k-1個
  2. 完全二叉樹:滿二叉樹缺了右下角若干個節點就是完全二叉樹,若干可以為0,即滿二叉樹是一種特殊的完全二叉樹

二叉樹的性質🗂

  1. 整棵樹的根若層次為1,則二叉樹的第k層的最大節點數:2^(k-1)個

  2. 由1可以推匯出,一棵k層的二叉樹的總的最大節點數為2^k-1個

  3. 任何一棵二叉樹,度為2的節點數總是比葉子節點數多1個

  4. 具有n個節點的二叉樹的深度為log2(n+1)往上取整

  5. 重要(該性質常用于堆內)👹

    按層序遍歷的順序從0開始給二叉樹的節點依次標記序號,對于序號為i的節點:

    1. 若這個節點有雙親,則雙親的標號為:(i-1)/2
    2. 若這個節點有左孩子,則左孩子的序號為:2*i+1
    3. 若這個節點有右孩子,則右孩子的序號為:2*i+2

對3推導:

二叉樹的總結點數為n,度為0的節點數為N0,度為1的節點數為N1,度為2的節點數為N2

則:n=N0+N1+N2

因為n個節點的二叉樹,具有n-1條邊(因為根上面沒有邊)

則:n-1=N1+2*N2

對上述兩個式子計算可得:N2=N0+1,證畢


對4的推導:

層數定死了的話,完全二叉樹可以添加若干個節點使自身變成一棵滿二叉樹,但此時的整棵樹的深度并沒有發生變化,之所以往滿二叉樹作改變,是因為滿二叉樹的總結點數量有現成的公式:2^k-1(k就是整棵樹的深度)

∴2^k-1=n

∴k=log2(n+1),證畢


練習:

具有2n個節點的完全二叉樹的葉子有多少個?

解:設度為0的節點個數為n0,度為1的節點個數為n1,度為2的節點個數為n2

∴2n=n0+n1+n2

此處n1恒等于1,因為1要和第一層的根加起來組成偶數才能滿足整個樹的節點個數為偶數

即:2n=n0+n2+1

由∵n0=n2+1

∴2n=n0+n0-1+1=2n0 故:n0=n


自己實作一個簡單的二叉樹(用最常見的孩子表示法)🥇

class BTNode{
    public int val;
    public BTNode left;
    public BTNode right;

    public BTNode(int val) {
        this.val = val;
    }
}
public class MyBinaryTree {
    public BTNode root;
    
    public BTNode createTree(){
        BTNode node1=new BTNode(1);
        BTNode node2=new BTNode(2);
        BTNode node3=new BTNode(3);
        BTNode node4=new BTNode(4);
        BTNode node5=new BTNode(5);
        
        //連接
        node1.left=node2;
        node1.right=node3;
        node2.left=node4;
        node2.right=node5;
        
        root=node1;
        
        return root;
    }
}

二叉樹的遍歷🉑

所有二叉樹相關的題目都是需要通過某種遍歷來實作

  1. 遍歷方式:前序、中序、后序遍歷
  2. 前序遍歷(Preorder Traversal):根左右為序
  3. 中序遍歷(Inorder Traversal):左根右為序
  4. 后序遍歷(Postorder Traversal):左右根為序

前序遍歷🛰

如上圖:前序遍歷列印:123456

代碼:

public void preOrder(BTNode root){
    if(root==null){
        return;
    }
    System.out.print(root.val+" ");
    preOrder(root.left);
    preOrder(root.right);
}

中序遍歷🗡

上圖中序遍歷結果:321546

代碼:

public void inOrder(BTNode root){
    if(root==null){
        return;
    }
    inOrder(root.left);
    System.out.print(root.val+" ");
    inOrder(root.right);
}

后序遍歷🚅

上圖后序遍歷結果:325641

代碼:

public void postOrder(BTNode root){
    if(root==null){
        return;
    }
    inOrder(root.left);
    inOrder(root.right);
    System.out.print(root.val+" ");
}

力扣有前中后序遍歷相關的例題,見我的力扣博客


層序遍歷🥂

從第一層往下,從左往右,依次遍歷的方式就叫層序遍歷

代碼實作的時候,我們可以借助于佇列,先將root入隊,佇列不為空時:出隊一個元素,對該元素的左右孩子進行檢查,若不為空則入隊,為空則不如隊,并且每次彈出的元素都用另外一個線性結構存一下,最后按順序把線性結構里的元素注意列印就是層序遍歷的結果

代碼:

public void levelOrder(BTNode root){
    if(root==null) return;
    Queue<BTNode> queue=new LinkedList<>();
    Queue<BTNode> ans=new LinkedList<>();

    queue.offer(root);
    while(!queue.isEmpty()){
        BTNode front=queue.poll();//記錄好,等下還要入隊到ans里頭呢
        if(front.left!=null) queue.offer(front.left);
        if(front.right!=null) queue.offer(front.left);

        ans.offer(front);
    }

    //列印ans
    while(!ans.isEmpty()){
        BTNode front=ans.poll();
        System.out.print(front.val+" ");
    }
}

只知道前中后序的其中兩個不可以得到唯一的二叉樹


二叉樹的一些基本操作🎠

  1. 獲取樹的節點個數

    public int size(BTNode root){
        if(root==null){
            return 0;
        }
        return 1+size(root.left)+size(root.right);
    }
    
  2. 獲取葉子的個數

    public int leafCount(BTNode root){
        if(root==null){
            return 0;
        }
        //root!=null
        if(root.left==null&&root.right==null){
            return 1;
        }
        return leafCount(root.left)+leafCount(root.right);
    }
    
  3. 第k層節點個數

    public int getKLevelNodeCount(BTNode root,int k){
        if(root==null||k<=0) return 0;
    
        if(k==1) return 1;
    
        return getKLevelNodeCount(root.left,k-1)+getKLevelNodeCount(root.right,k-1);
    }
    
  4. 獲取一棵二叉樹的高度

    public int height(BTNode root){
        if(root==null){
            return 0;
        }
        //當前的root不為null,至少至少能為當前這棵樹的高度貢獻1
        return Math.max(height(root.left),height(root.right))+1;
    }
    
  5. 查找二叉樹中是否包含關鍵字key

    public BTNode find(BTNode root,int key){
        if(root==null) return null;
        if(root.val==key) return root;
    
        BTNode left=find(root.left,key);
        if(left!=null) return left;
    
        BTNode right=find(root.right,key);
        if(right!=null) return right;
    
        return null;
    }//根左右為序進行遍歷的
    
  6. 判斷一棵樹是不是完全二叉樹

    ? 可以借助佇列,把root入隊,再彈出,只要彈出的元素不為null,我們就將root.left和root.right都入隊,只要某一次出隊的元素是null,我們就停止迭代,檢查佇列中是否都是null,只要存在不是null的元素,就說明這棵樹不是完全二叉樹,可以畫個圖理解一下這背后的邏輯,(是不是發現了入進去的元素恰好就是層序遍歷的順序將節點逐一入隊的?那如果都彈出null了,佇列里還有不是null的元素,是不是就說明這棵樹不是完全二叉樹了呢?)

    代碼:

    public boolean isCompleteTree(BTNode root){
        if(root==null) return true;//空樹默認是吧,這個不是最重要的
        Queue<BTNode> queue=new LinkedList<>();
        queue.offer(root);
        while(queue.peek()!=null){
            BTNode front=queue.poll();
            queue.offer(front.left);
            queue.offer(front.right);
        }
        while(!queue.isEmpty()){
            BTNode front=queue.poll();
            if(front!=null){
                return false;
            }
        }
        return true;
    }
    
  7. 檢查兩棵樹是否相同(力扣100)

    遞回最重要的就是看終止條件:本題的話兩棵樹要想相同,首先結構得相同,其次節點的值相同才算完成一個節點之間的比較,最后,遍歷到葉子往后了,可不敢影響我們的結果,

    class Solution {
        public boolean isSameTree(TreeNode p, TreeNode q) {
            if((p==null&&q!=null)||(p!=null&&q==null)) return false;//結構都不一樣,肯定不對
            //要么都為空,要么都不為空
            if(p==null&&q==null){
                return true;//葉子往后可不敢影響結果
            }
            //都不為空的情況
            if(p.val!=q.val) return false;
    
            //上面這么多終止條件都沒攔住,那就繼續往下遍歷唄
            return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
        }
    }
    
  8. 另一棵樹的子樹(力扣572)

    因為剛才已經學會了如何判斷兩棵樹是不是相同的,我們就可以基于此,寫這道題

    class Solution {
        private boolean isSameTree(TreeNode p,TreeNode q){
            if((p==null&&q!=null)||(p!=null&&q==null)){
                return false;
            }
            if(p==null&q==null) return true;
            if(p.val!=q.val) return false;
    
            return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
        }
        public boolean isSubtree(TreeNode root, TreeNode subRoot) {
            if(root==null) return false;
            if(isSameTree(root,subRoot)) return true;
            return isSubtree(root.left,subRoot)||isSubtree(root.right,subRoot);
        }//本質還是根左右為序進行遍歷
    }
    
  9. 平衡二叉樹(力扣110)

    class Solution {
        private int height(TreeNode root){
            if(root==null) return 0;
            return Math.max(height(root.left),height(root.right))+1;
        }
        public boolean isBalanced(TreeNode root) {
            if(root==null) return true;
    
            if(height(root.left)-height(root.right)>1) return false;
            if(height(root.right)-height(root.left)>1) return false;
    
            return isBalanced(root.left)&&isBalanced(root.right);
        }
    }
    

    對本題提供一個巧妙的解法:在算樹高的時候就可以判斷這棵樹是不是平衡二叉樹了,思想就是,當前樹根的左右子樹只有平衡的時候我才正常的去求當前樹的高度,否則我就回傳一個-1,一旦某個區域子樹不平衡了,將會導致整棵樹的高度都是負數,那我們就可以很輕松的知道一棵樹是不是平衡二叉樹了呀,

    class Solution {
        private int height(TreeNode root){
            if(root==null) return 0;
            int leftHeght=height(root.left);
            int rightHeight=height(root.right);
    
            if(leftHeght>=0&&rightHeight>=0&&Math.abs(leftHeght-rightHeight)<=1){
                return Math.max(leftHeght,rightHeight)+1;
            }else{
                return -1;
            }
        }
        public boolean isBalanced(TreeNode root) {
            if(height(root)<0){
                return false;
            }
            return true;
        }
    }
    
  10. 對稱二叉樹(力扣101)

    可以假想是兩棵一模一樣的樹進行比較,只不過比較位置有所講究

    class Solution {
        private boolean isSymmetricChild(TreeNode p,TreeNode q){
            if((p==null&&q!=null)||(p!=null&&q==null)) return false;//結構都不一樣還比較個毛線
            //能到這說明要么都為空,要么都不為空
            if(p==null&&q==null) return true;//這種情況不需進一步進行節點值的判斷
            //都不為空
            if(p.val!=q.val) return false;
    
            //上述是就一個節點的判斷
            return isSymmetricChild(p.left,q.right)&&isSymmetricChild(p.right,q.left);
        }
        public boolean isSymmetric(TreeNode root) {
            if(root==null) return true;
    
            return isSymmetricChild(root.left,root.right);
        }
    }
    
    

前面提到了層序遍歷,要知道層序遍歷可以干很多事,比如阿里巴巴考過的一道題:給出一棵二叉樹的左視圖,左視圖的意思是:將每一層的第一個節點作存盤;又如求一棵樹的寬度,意思就是說一棵樹的某一層具有的節點數比這棵樹的其他層的節點數都要多,那這一層的節點數量就是這棵樹的寬度

二叉樹的繼續學習🔐

見我的力扣專欄關于二叉樹的題目,

?

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/433329.html

標籤:AI

上一篇:python_DataFrame的loc和iloc取資料 基本方法總結

下一篇:pandas使用groupby函式和agg函式獲取每個分組特定變數獨特值的個數(number of distinct values in each group in dataframe)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more