• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 195,  comments - 30,  trackbacks - 0
            Leaf Nodes
            Status In/Out TIME Limit MEMORY Limit Submit Times Solved Users JUDGE TYPE
            stdin/stdout 1s 10240K 222 102 Standard

            Kate is learning about binary tree. She think she know everything you know about binary trees. Wait, you don't know binary tree? Find a book about data structures, and it will just take you about three minutes. Now here is a binary tree:

                                                3
            / \
            /   \
            2     4
            / \     \
            /   \     \
            0     1     6
            /
            /
            5
            

            Kate think she also know something that you may not notice. First, for some type of binary trees, only the leaf nodes have the meaning (leaf node is the node which has no sub trees, for the tree above, the leaf nodes are 0 1 5), an example is the Huffman Tree. Second, she guess that if you know the preorder traversal and the postorder traversal of a binary tree, you can ensure the leaf node of the tree, and their order.

            For the tree above, the preorder travesal is 3 2 0 1 4 6 5 and the postorder travesal is 0 1 2 5 6 4 3, the leaf nodes in order(from left to right) are 0 1 5.

            But now the problem is she just guess it, if you can find a way to print a tree's leaf nodes in order using its preorder traversal and postorder traversal, you can say "she is right!"

            Input Specification

            The input file will contain one or more test cases. In each test case there is a integer n (0<=n <= 10000), indicating the tree have n nodes, then followed two lists of integers, either contains n integers in the range of 0 and n-1 (both included), the first list is the preorder traversal, and the other is the postorder traversal.

            Input is terminated by an interger -1;

            Output Specification

            For each test case, print the tree's leaf nodes in order, each in a line.

            Sample Input

            7
            3 2 0 1 4 6 5
            0 1 2 5 6 4 3
            -1

            Sample Output

            0
            1
            5
            根據一個重要結論,無論是先根還是后根遍歷,左子樹的結點總是出現在右子樹結點的前面

                                             G  
                                            /   \  
                                          F        B  
                                        /        /   \  
                                      K         C      H  
                                    /   \             /        
                                  D       E         J  
                                    \  
                                      A  
                                    /  
                                  I  
               
              不論先根后根,左子樹的結點總是出現在右子樹結點的前面。  
              G為根樹,先根次序時G后跟F,后根次序時F前有DIAEKF,故DIAEKF為G的左子樹的結點,
              CJHB為G的右子樹的結點。且左右子樹的先根序為:FKDIAE,BCHJ。
              遞歸處理兩子樹即可搞定

            void  find(int preb,int pree,int postb,int poste) 
               {
               int i=s(pre,post[poste-1]);
              int j=s(post,pre[preb+1]);
            //添加處理的代碼
             //判斷是否有左/右支

                find(preb+1,i-1,postb,j);
              find(i,pree,j+1,poste-1);
               }
            但是上面的思路是錯誤的?。。。。。。。。。。。。。?/span>
            只知道先序和后序不能能推出樹來  
               
              只有中序和先序或者中序和后序才可以  
               
              不然只知道根節點,但是哪些是左子樹哪些是右子樹就不知道了
            比如先序時1234  
              后序是4321的二叉樹有8種比如:  
                  1                     1              
                  \                   /  
                    2               2  
                /                 /  
              3                 3  
                \             /  
                  4         4

            正確思路:先遍歷后根次序,第一個一定為葉子,設為當前結點,然后依次檢測,如果該點在先根序列中位于當前節點的后面,則為葉子節點,同時更新當前結點。
            posted on 2009-07-14 22:14 luis 閱讀(273) 評論(0)  編輯 收藏 引用 所屬分類: 圖論*矩陣
            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久国产视频电影| 无码人妻久久一区二区三区免费| 囯产极品美女高潮无套久久久 | 久久精品国产免费观看三人同眠| 亚洲国产精品无码久久九九| 国产aⅴ激情无码久久| 久久久青草青青亚洲国产免观 | 尹人香蕉久久99天天拍| 浪潮AV色综合久久天堂| 久久精品国产精品亚洲艾草网美妙| 久久免费视频1| 狠狠色丁香婷综合久久| 久久久久亚洲AV无码观看| 99精品久久久久久久婷婷| 久久人人爽人人爽人人片AV东京热 | 免费久久人人爽人人爽av| 久久伊人精品青青草原高清| 久久久久久久综合狠狠综合| 大伊人青草狠狠久久| 亚洲国产精品18久久久久久| 久久精品无码免费不卡| 热re99久久6国产精品免费| 亚洲国产精品无码久久九九| 国产激情久久久久影院| 精品亚洲综合久久中文字幕| 久久综合亚洲欧美成人| 日韩人妻无码精品久久久不卡| 亚洲欧洲精品成人久久曰影片| 伊人久久大香线焦综合四虎| 国产国产成人精品久久| 国产精品久久久久影院色| 色偷偷久久一区二区三区| 影音先锋女人AV鲁色资源网久久 | 亚洲国产成人久久综合一区77 | 精品综合久久久久久98| 狠狠色丁香婷婷久久综合| 国产一区二区久久久| 99精品久久久久久久婷婷 | 国产一级持黄大片99久久| 狠狠88综合久久久久综合网 | 久久久久99精品成人片直播|