<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    二叉樹最大的路徑和

    Posted on 2013-04-18 21:31 小明 閱讀(4009) 評論(0)  編輯  收藏 所屬分類: 數據結構和算法
    問題給定一個二叉樹,尋找最大的路徑和.
    路徑可以從任意節點開始到任意節點結束。(也可以是單個節點)

    比如:對于二叉樹
       1
      /  \
    2    3
    和最大的路徑是2->1->3,結果為6
    /**
     * Definition for binary tree
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */

    分析:
    初看這個問題很難解,可能的路徑會非常多,遍歷所有的路徑,計算量非常大。
    二叉樹的問題天生適合使用分治算法和遞歸實現。
    對于二叉樹
        v
       /  \
      v1 v2
    有六種可能最大值v,v1,v2,v+v1,v+v2,v+v1+v2
    但是只有v,v+v1,v+v2這三個值的最大者才能返回給上一級。(為什么?因為要形成通往上一層的path,請仔細體會)

    代碼如下:

    public class Solution {
        private int max;
        
        private int travel(TreeNode node){
            int v = node.val,v1=0,v2=0;
            int result = v;
            int mlocal = v;
            int i = 0;
            if(node.left!=null){
                v1 = travel(node.left);
                if(v1>0){
                    result = v+v1;
                }
                if(mlocal<v1){
                    mlocal = v1; 
                }
            }
            if(node.right!=null){
                v2 = travel(node.right);
                if(result<v+v2){
                    result = v+v2;
                }
                if(mlocal<v2){
                    mlocal = v2;
                }
            }
            if(mlocal<result){
                mlocal = result;
            }
            if(mlocal < v+v1+v2){
                mlocal = v+v1+v2;
            }
            if(max<mlocal){
                max = mlocal;
            }
            return result;
        }
        
        public int maxPathSum(TreeNode root) {
            max = Integer.MIN_VALUE;
            travel(root);
            return max;        
        }
    }












    主站蜘蛛池模板: 国产精品手机在线亚洲| 亚洲成AV人片在线观看无| 99re热免费精品视频观看 | 一区二区在线视频免费观看| 成人av片无码免费天天看| 日韩精品无码免费专区午夜 | 亚洲人成网站看在线播放| 亚洲色精品三区二区一区| 一个人晚上在线观看的免费视频| 免费国产成人午夜私人影视| 亚洲精品国产字幕久久不卡| 久久精品亚洲AV久久久无码 | 亚洲午夜无码久久久久| 国产成人精品日本亚洲专一区| 国产精品色拉拉免费看| 国产中文在线亚洲精品官网| 中文字幕亚洲综合小综合在线| 日韩版码免费福利视频| 久久国产亚洲电影天堂| 亚洲精品无码久久| 一区二区三区观看免费中文视频在线播放 | 亚洲午夜久久久影院| 成人A片产无码免费视频在线观看| 久久久青草青青亚洲国产免观| 99久久国产免费-99久久国产免费 99久久国产免费中文无字幕 | 麻豆91免费视频| 成人免费男女视频网站慢动作 | 亚洲人成色7777在线观看不卡| 国内精品久久久久影院亚洲| 亚洲免费视频在线观看| 亚洲午夜电影在线观看高清| 久久久久国产免费| 亚洲人成免费电影| 国产一级淫片a视频免费观看| 亚洲视频网站在线观看| 拍拍拍无挡视频免费观看1000| 五月婷婷亚洲综合| 特级aaaaaaaaa毛片免费视频| 国产亚洲3p无码一区二区| 免费三级毛片电影片| 一级毛片免费播放试看60分钟|