隨筆 - 8, 文章 - 0, 評(píng)論 - 6, 引用 - 0
          數(shù)據(jù)加載中……

          二叉排序樹變?yōu)殡p向鏈表

          把一個(gè)二叉排序樹(也許不叫這個(gè))變?yōu)檫f增的雙向鏈表,不能夠生成額外的結(jié)點(diǎn).
          eg 6
                 / \
                4   8
               / \ / \
              3  5 7  9

          3=4=5=6=7=8=9

          我的解:

          class Node
          {
              
          public Node left;
              
          public Node right;
              
              
          private static Node getLinkListTail(Node head)
              
          {
                  Node result 
          = head;
                  
          if(result==nullreturn null;
                  
          while(result.right!=null)
                  
          {
                      result 
          = result.right;
                  }

                  
          return result;
              }

              
              
          public static Node flatten(Node root)
              
          {
                  
          if(root==nullreturn null;
                  
                  Node result 
          = root;
                  
                  
          // A leaf node
                  if(root.left==null&&root.right==nullreturn root;
                  
                  
          //divide-and-conquer
                  Node leftSubTreeLinkListHead = flatten(root.left);
                  Node rightSubTreeLinkListHead 
          = flatten(root.right);
                  
                  
          //merge
                  Node leftSubTreeLinkListTail = getLinkListTail(leftSubTreeLinkListHead);
                  root.left 
          = leftSubTreeLinkListTail;
                  root.right 
          = rightSubTreeLinkListHead;
                  
          if(leftSubTreeLinkListHead!=null
                  
          {
                      result 
          = leftSubTreeLinkListHead;
                      leftSubTreeLinkListTail.right 
          = root;
                  }

                  
          if(rightSubTreeLinkListHead!=null) rightSubTreeLinkListHead.left = root;
                  
                  
          return result;
              }

          }


          posted on 2007-07-18 20:37 Job Hu 閱讀(648) 評(píng)論(0)  編輯  收藏 所屬分類: 算法與數(shù)據(jù)結(jié)構(gòu)


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 永胜县| 姜堰市| 衡东县| 宜宾县| 开封县| 昭通市| 罗定市| 石楼县| 磐安县| 抚州市| 梁平县| 旬邑县| 荔波县| 庆城县| 洛浦县| 曲水县| 勐海县| 平江县| 三明市| 石柱| 灵武市| 韩城市| 周口市| 望奎县| 鲁甸县| 仙游县| 德钦县| 安达市| 措美县| 泽州县| 平塘县| 酉阳| 江陵县| 嘉黎县| 乌拉特中旗| 海兴县| 龙南县| 赤壁市| 昌邑市| 寻乌县| 衡阳县|