老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

leetcode106.從中序與后序遍歷序列構造二叉樹-創新互聯

題目:

創新互聯建站服務項目包括花山網站建設、花山網站制作、花山網頁制作以及花山網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,花山網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到花山省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!

中序遍歷特點:先遍歷左子樹,再遍歷根節點,最后遍歷右子樹

后序遍歷特點:先遍歷左子樹,再遍歷右子樹,最后遍歷根節點

根據后序遍歷的特點,我們可以得到postorder數組最后一個元素就是根節點,root?= 3,在中序遍歷中找到該節點,根據中序遍歷的特點就可以找到根節點的左右子樹,[9]就是左子樹的所有值,[15 , 20 , 7]就是右子樹的所有的值。

我們用變量pos_index來從后往前遍歷postorder數組(后序遍歷序列),初始值為pos_index = postorder.length - 1,因為后序遍歷是 左 --->右 --->根 順序遍歷,所以當我們從后往前遍歷postorder數組時,先訪問的是右子樹的節點。

定義遞歸函數 buildTree(left, right)表示當前遞歸到中序序列中當前子樹的左右邊界,遞歸入口為buildTree(0, n - 1);

? 按此思路我們用遞歸實現時,應該先遞歸創建右子樹,在遞歸創建左子樹。

代碼如下:

class Solution {
    int pos_index;
    int[] postorder;

    //創建map,來存放中序序列的值和對應的索引值
    HashMapinorder_map = new HashMap();


    public TreeNode buildTree(int[] inorder, int[] postorder) {
        this.postorder = postorder;
        
        int index = 0;
        //將inorder數組中的元素存放到inorder_map中,方便后面找索引位置
        for(Integer value : inorder){
            inorder_map.put(value,index++);
        }
        pos_index = postorder.length - 1;
    return buildTree(0,pos_index);
        

    }
    public TreeNode buildTree(int left,int right){
        //當left >right時,說明分割的子數組中沒有節點來構造樹了
        if(left >right){
            return null;
        }
        //獲取后序遍歷序列的最后一個元素,并為根節點
        
        int value = postorder[pos_index];
    
        //將pos_index左移
        pos_index--;
        //封裝為根節點
        TreeNode root = new TreeNode(value);
        
        //找到value在中序遍歷序列的索引
        int index = inorder_map.get(value);
        

        //遞歸創建右子樹
        root.right = buildTree(index + 1, right);
        //遞歸創建左子樹
        root.left = buildTree(left,index - 1);

        return root;
    



    }
    
}

總結:主要是利用后序遍歷序列來確定根節點,在以此根節點到中序遍歷序列中來確定改根節點的左右子樹,通過參數left和right來動態變化創建子樹的左右邊界。

后序遍歷實現:

public void postorder(TreeNode root){
    if(root == null){
        return null;    
    }
    //遞歸左子樹
    postorder(root.left);
    //遞歸右子樹
    postorder(root.right);
    
    //打印根節點
    System.out.print(root.val);
    
}

我們通過上述代碼得到了后序遍歷序列,現在要反向遍歷后序序列(因為根據后序遍歷特點,根在序列末尾)將其還原成樹,就需要將上述代碼的遍歷過程反向即可(也就是反向的前序遍歷 根 ---- 右 --- 左),這也就是為什么要先創建右子樹,再創建左子樹。利用后序序列我們只能知道根,而不能確定當前根的左右子樹的范圍,這時候我們就需要借助中序遍歷來確定根的子樹的邊界。

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧


分享文章:leetcode106.從中序與后序遍歷序列構造二叉樹-創新互聯
URL網址:http://www.xueling.net.cn/article/dcejjc.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 扒开老女人p大荫蒂视频 | 国产亚洲精品A在线观看 | 国产精品欧美一区乱破 | 娇喘潮喷抽搐高潮视频 | 久久久中日AB精品综合 | 免费的又色又爽又黄的视频本 | 亚洲国产成人久久精品软件 | 亚洲AV无码一区二区乱子仑 | 国产成人无码a区精油按摩 日韩黄色大片网站 | 在线网站| 777午夜精品视频在线播放 | 亚洲综合AV一区二区三区不卡 | 18禁超污无遮挡无码免费动态图 | 欧美肥老妇视频 | mimiai最新网站入口 | 成人9久久国产精品品 | 500av导航大全精品 | 午夜亚洲国产理论片无码片 | zzzwww在线看片免费 | 国产精品一区2区三区内射 欧美性受xxxx黑人猛交 | 久久久久成人片免费观看 | 国产精品成人亚洲一区二区 | 国产精品去看片 | 日本成人在线免费观看 | 天堂国产一区 | 国产a做爰全过程片 | 亚洲国产精品一区在线观看 | 免费的又色又爽又黄的片捆绑美女 | 国产成人看片 | 91久久国产综合精品女同 | 亚洲成成熟女人专区 | 麻豆视频国产在线观看 | 内射少妇三洞齐开 | 精品国产九九 | 国产在线乱码一区二区三区 | 男人操女人视频网站 | 国产人妻人伦精品无码.麻豆 | 精品视频一区在线视频 | 好男人日本社区www 欧美猛男军人gay巨大 | 交换娇妻呻吟hd中文字幕 | 亚洲午夜无码AV毛片久久 |