<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)系 :: 聚合  :: 管理
    問題給定一個二叉樹,尋找最大的路徑和.
    路徑可以從任意節(jié)點(diǎn)開始到任意節(jié)點(diǎn)結(jié)束。(也可以是單個節(jié)點(diǎn))

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

    分析:
    初看這個問題很難解,可能的路徑會非常多,遍歷所有的路徑,計(jì)算量非常大。
    二叉樹的問題天生適合使用分治算法和遞歸實(shí)現(xiàn)。
    對于二叉樹
        v
       /  \
      v1 v2
    有六種可能最大值v,v1,v2,v+v1,v+v2,v+v1+v2
    但是只有v,v+v1,v+v2這三個值的最大者才能返回給上一級。(為什么?因?yàn)橐纬赏ㄍ弦粚拥膒ath,請仔細(xì)體會)

    代碼如下:

    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乱码一区二区三区林ゆな | 免费高清av一区二区三区| a毛片在线免费观看| 69av免费视频| 伊在人亚洲香蕉精品区麻豆| 亚洲爆乳AAA无码专区| 最近免费中文字幕大全| 国产精品国产亚洲精品看不卡| 亚洲一区二区三区高清视频| 国产人成免费视频网站| 国产亚洲精品a在线观看| 一级片在线免费看| 国产精品亚洲аv无码播放| 亚洲a∨国产av综合av下载| 亚在线观看免费视频入口| 亚洲av无码av制服另类专区| 6080午夜一级毛片免费看| 亚洲一区二区三区久久| 日韩一级视频免费观看| 亚洲成人免费电影| 午夜高清免费在线观看| 一级免费黄色毛片| 亚洲国产天堂久久综合网站| 91成人免费在线视频| 亚洲av日韩精品久久久久久a| 日韩亚洲国产综合久久久| 日本高清不卡aⅴ免费网站| 亚洲综合久久成人69| 最近2019中文免费字幕在线观看| 亚洲成人在线电影| 男男AV纯肉无码免费播放无码| 亚洲a在线视频视频| 在线观看av永久免费| 一级一黄在线观看视频免费| 亚洲综合日韩中文字幕v在线| 中国videos性高清免费| 亚洲午夜国产精品| 波多野结衣中文字幕免费视频 | 亚洲国产综合精品中文第一区| 亚洲第一网站免费视频| 黄色一级毛片免费看|