<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小明思考

    Just a software engineer
    posts - 124, comments - 36, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    問題給定一顆二叉樹:
    class TreeLinkNode {
      TreeLinkNode left;
      TreeLinkNode right;
      TreeLinkNode next;
    }
    要求把所有節(jié)點的next節(jié)點設置成它右邊的節(jié)點,如果沒有右節(jié)點,設置成空。初始狀態(tài),所有的next的指針均為null.

    要求:你只能使用常數(shù)的空間。

    比如:
             1
           /  \
          2    3
         / \    \
        4   5    7
    應該輸出:

    1 -> NULL
           /  \
          2 -> 3 -> NULL
         / \    \
        4-> 5 -> 7 -> NULL

    分析:
    題目不難,但是在面試時,在有限的時間內(nèi),沒有bug寫出,還是很考驗功力的。

    解決這個問題的思路是逐層掃描,上一層設置好下一層的next關(guān)系,在處理空指針的時候要格外小心。
    代碼如下,有注釋,應該很容易看懂:
    使用了三個指針:
    node:當前節(jié)點
    firstChild:下一層的第一個非空子節(jié)點
    lastChild:下一層的最后一個待處理(未設置next)的子節(jié)點

        public void connect(TreeLinkNode root) {
            TreeLinkNode node = root;
            TreeLinkNode firstChild = null;
            TreeLinkNode lastChild = null;
            
            while(node!=null){
                if(firstChild == null){ //記錄第一個非空子節(jié)點
                    firstChild = node.left!=null?node.left:node.right;
                }
                //設置子節(jié)點的next關(guān)系,3種情況
                if(node.left!=null && node.right!=null){ 
                    if(lastChild!=null){
                        lastChild.next = node.left;
                    }
                    node.left.next = node.right;
                    lastChild = node.right;
                }
                else if(node.left!=null){
                    if(lastChild!=null){
                        lastChild.next = node.left;
                    }
                    lastChild = node.left;
                }
                else if(node.right!=null){
                    if(lastChild!=null){
                        lastChild.next = node.right;
                    }
                    lastChild = node.right;
                }
                //設置下一個節(jié)點,如果本層已經(jīng)遍歷完畢,移到下一層的第一個子節(jié)點
                if(node.next!=null){
                    node = node.next;
                }
                else{
                    node = firstChild;
                    firstChild = null;
                    lastChild = null;
                }
            }
        }
    主站蜘蛛池模板: 亚洲精品高清无码视频| 免费看香港一级毛片| 亚洲色成人中文字幕网站| 免费国产va在线观看| 亚洲综合无码精品一区二区三区| 美女隐私免费视频看| 国产成人精品免费视频大全五级| 在线亚洲精品视频| 亚洲一区精品伊人久久伊人 | 亚洲精品无码AV中文字幕电影网站| 国产亚洲精品国产福利在线观看| 亚洲AV之男人的天堂| 久久免费视频网站| 亚洲精品无AMM毛片| 亚洲人成无码www久久久| 国产成人免费高清激情明星| 成人精品国产亚洲欧洲| 亚洲成AV人片在线观看无码| 五月婷婷综合免费| 成年免费a级毛片| 亚洲日韩中文字幕| 亚洲亚洲人成综合网络| 免费鲁丝片一级观看| 日韩免费在线视频| 久青草国产免费观看| 亚洲不卡影院午夜在线观看| 久久亚洲国产成人亚| 国产成人精品高清免费| 免费国产黄线在线观看| 国产又黄又爽胸又大免费视频 | 亚洲国产成人va在线观看网址| 亚洲AV无码乱码在线观看性色扶 | 一级毛片免费播放| 一级人做人a爰免费视频| 亚洲高清国产拍精品熟女| 亚洲久本草在线中文字幕| 国产亚洲色婷婷久久99精品91| 日本一道本高清免费| 精品国产麻豆免费网站| 大地资源免费更新在线播放| 精品国产sm捆绑最大网免费站|