首页 > 其他 > 详细

LintCode之二叉树的最大节点

时间:2017-11-09 23:20:47      阅读:268      评论:0      收藏:0      [点我收藏+]

技术分享

分治问题,可以把整棵树看做是由一颗颗只有三个节点组成的小树,一颗树的构成是根节点、左子树、右子树,这样只需要从左子树找出一个最大的节点,从右子树找出一个最大的节点,然后与根节点三个取个最大的,就是最终的结果了。

 

AC代码:

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    
    /*
     * @param root: the root of tree
     * @return: the max node
     */
    public TreeNode maxNode(TreeNode root) {
        // write your code here
        
        if(root==null) return null;
        
        TreeNode leftMaxNode = maxNode(root.left);
        TreeNode rightMaxNode = maxNode(root.right);
        
        TreeNode resNode = root;
        if(leftMaxNode!=null && leftMaxNode.val>resNode.val) resNode = leftMaxNode;
        if(rightMaxNode!=null && rightMaxNode.val>resNode.val) resNode = rightMaxNode;
        
        return resNode;
    }
    
}
 

 

题目来源: http://www.lintcode.com/zh-cn/problem/binary-tree-maximum-node/

LintCode之二叉树的最大节点

原文:http://www.cnblogs.com/cc11001100/p/7811828.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!