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












    主站蜘蛛池模板: 亚洲综合无码一区二区三区| 国产v亚洲v天堂无码网站| 亚洲人6666成人观看| 久久99毛片免费观看不卡| 亚洲午夜国产精品无码老牛影视 | 国产成人免费a在线视频app | 色屁屁在线观看视频免费| 国产在线不卡免费播放| 最新亚洲人成网站在线观看| 国产精品99久久免费| 色婷婷精品免费视频| 久久久久国产亚洲AV麻豆| 在线观看免费黄网站| 亚洲五月激情综合图片区| 99久9在线|免费| 亚洲一卡二卡三卡四卡无卡麻豆| 久久久久久精品成人免费图片| 亚洲特级aaaaaa毛片| 免费无码又爽又刺激聊天APP| 亚洲色大成网站www永久网站| 日本免费v片一二三区| yy一级毛片免费视频| 国产av无码专区亚洲av桃花庵| 99久久99热精品免费观看国产 | 亚洲国产精品成人AV在线| 亚洲国产精品成人久久蜜臀 | 亚洲精品无码Av人在线观看国产| 久久99精品免费视频| 亚洲精品二三区伊人久久| 四虎永久精品免费观看| 在线观看免费黄网站| 亚洲一区二区三区免费在线观看| 国产片免费在线观看| a级毛片100部免费观看| 亚洲国产精品一区二区三区在线观看 | 亚洲日韩国产成网在线观看| 久久成人免费大片| 亚洲色成人WWW永久在线观看 | 亚洲AV无码1区2区久久| 成人毛片18女人毛片免费96| 久久国产乱子伦精品免费午夜 |