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












    主站蜘蛛池模板: 美女免费精品高清毛片在线视| 中文字幕在线免费| 国产精品免费在线播放| 国产精品高清全国免费观看| 亚洲乱码中文字幕综合| 日韩毛片在线免费观看| 国产伦一区二区三区免费| 亚洲第一街区偷拍街拍| 国产成人精品免费视频软件| 国产一区二区三区亚洲综合| 久久国产免费一区| 亚洲伊人tv综合网色| 添bbb免费观看高清视频| 免费成人午夜视频| 久久精品亚洲AV久久久无码| 成人免费一区二区无码视频| 国产亚洲综合久久系列| 日本中文字幕免费高清视频| 亚洲视屏在线观看| 免费被黄网站在观看| 高潮内射免费看片| 亚洲αv在线精品糸列| 日韩免费高清大片在线| 亚洲一线产区二线产区精华| 日本特黄特色免费大片| 亚洲福利电影在线观看| 好吊妞998视频免费观看在线| 亚洲精品视频在线播放| 女性自慰aⅴ片高清免费| 免费在线观看一区| 中文字幕亚洲综合久久| 毛片a级毛片免费播放下载 | 亚洲AV无码乱码在线观看代蜜桃| 午夜老司机免费视频| 皇色在线免费视频| 亚洲理论片在线观看| 亚洲成片观看四虎永久| 日韩内射激情视频在线播放免费| 亚洲老熟女五十路老熟女bbw | 极品美女一级毛片免费| 亚洲AV第一页国产精品|