您的位置:首页 > 其它

LintCode之二叉树的最大节点

2017-11-09 22:38 417 查看

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

 

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/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: