Leetcode && LintcodeLintCode算法题Android知识

LintCode Binary Tree Maximum Nod

2017-04-02  本文已影响261人  六尺帐篷

Find the maximum node in a binary tree, return the node.

样例
给出如下一棵二叉树:

 1

/
-5 2
/ \ /
0 3 -4 -5
返回值为 3 的节点。

分析

简单的递归思路,不过注意为空的情况,所以最好将为空的点的值设为最小值

代码

public class Solution {
    /**
     * @param root the root of binary tree
     * @return the max ndoe
     */
    public TreeNode maxNode(TreeNode root) {
        if(root == null)
            return null;
        
        return getMaxNode(root);
    }
    
    public TreeNode getMaxNode(TreeNode root) {
        if(root == null)
            return new TreeNode(Integer.MIN_VALUE);
        
        TreeNode left = getMaxNode(root.left);
        TreeNode right = getMaxNode(root.right);
        
        if(root.val >= right.val && root.val >= left.val)
            return root;
        if(left.val >= right.val && left.val >= root.val)
            return left;
        return right;
    }    
}
上一篇 下一篇

猜你喜欢

热点阅读