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

    比如:對(duì)于二叉樹
       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; }
     * }
     */

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

    代碼如下:

    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;        
        }
    }












    主站蜘蛛池模板: 亚洲国产一区二区a毛片| 亚洲自偷自偷在线成人网站传媒| 99精品视频在线观看免费专区| 免费在线观看自拍性爱视频| 国产精品亚洲美女久久久| 午夜视频在线免费观看| 亚洲国产欧美一区二区三区| 亚洲中文字幕在线第六区| 啦啦啦中文在线观看电视剧免费版| 婷婷久久久亚洲欧洲日产国码AV| 一二三四视频在线观看中文版免费| 国产精品亚洲专区一区| 亚洲麻豆精品果冻传媒| 免费人成在线观看视频播放| 91福利免费体验区观看区| 最新亚洲人成网站在线观看| 亚洲一区二区三区四区在线观看| 在线观看免费国产视频| 久久国产免费观看精品3| 免费看内射乌克兰女| 亚洲午夜精品在线| 亚洲日韩乱码中文无码蜜桃臀网站 | 最近2022中文字幕免费视频| 亚洲国产成人精品无码区花野真一| 久久久久久久尹人综合网亚洲 | 亚洲国产一区明星换脸| 免费中文字幕视频| 亚洲一级免费视频| 亚洲av一综合av一区| 亚欧色视频在线观看免费| 一级做a爱过程免费视频高清| 亚洲成a人片在线看| 亚洲成av人片天堂网| 亚洲美女高清一区二区三区| 成年女人免费v片| 99re在线视频免费观看| 国产在线精品观看免费观看| 美女视频黄a视频全免费网站一区| 亚洲国产精品成人精品软件 | 成人免费午夜无码视频| 免费在线中文日本|