lintcode 访问路径
http://www.lintcode.com/zh-cn/problem/binary-tree-maximum-node/
描述
在二叉树中寻找值最大的节点并返回。
样例
给出如下一颗二叉树:
1
/ \
-5 2
/ \ / \
0 3 -4 -5
返回值为3
的节点。
Java代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| public class Solution {
/**
* @param root the root of binary tree
* @return the max ndoe
*/
public TreeNode maxNode(TreeNode root) {
// Write your code here
if (root == null)
return root;
TreeNode left = maxNode(root.left);
TreeNode right = maxNode(root.right);
return max(root, max(left, right));
}
TreeNode max(TreeNode a, TreeNode b) {
if (a == null) return b;
if (b == null) return a;
if (a.val > b.val) return a;
return b;
}
}
|
Python代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| class Solution:
# @param {TreeNode} root the root of binary tree
# @return {TreeNode} the max node
def maxNode(self, root):
# Write your code here
if root is None:
return None
left = self.maxNode(root.left)
right = self.maxNode(root.right)
return self.max(root, self.max(left, right))
def max(self, a, b):
if a is None:
return b
if b is None:
return a
if a.val > b.val:
return a
return b
|